View information is allocated for every GRFNode and GRFArc.
Optimizing the size of this class, results in lot of memory
saved and hence better performance.

GRFViewInfo:

	Flags attribute (int)
		8 Bits have been used already to reprensent the
		following states of a node/arc:
			VISIBLE		VISITED		CONNECTED	PLACED_IN_COL
			POSITIONED	MARKED		DRAGGED		GROUPED
		
		Of all these states, GROUPED is probably the one not
		used yet; but will be once group/ungroup filter goes
		into effect in the reference graph.
		
		So, potentially, the rest of the 24 bits are available
		for other purposes.
		
	Color attribute is redundant and unused
		Get rid of this and use an index (4/8-bits) to
		specify color attribute for nodes. This would
		allow us to use up to 16/256 colors from a pallete
		that is configurable.
	
	Highlight level : uses an int now
		Legal values for highlight level (used by nodes
		and arcs) are 0 and -1. This could be represented
		easily by a bit in the flags. To represent different
		highlight levels in the future, we could allocate
		say 4/8 bits for this purpose.
	
GRFArcViewInfo:

	Thickness attribute (int)
		Used to represent the thickness of arcs. 10 levels of
		thickness can be represented. Again, the flags attribute
		from the base class could be used.
	
GRFNodeViewInfo:

	String label
		Store the name of the node.
	
	Point point
		Location of the node in the graph. This is relevant with
		dragged nodes. In non-dragged nodes, the position is represented
		in GridNodeViewInfo (col/row).
	
	Point size
		I am not sure if this is being used and not sure if this is
		required.
	
GRFGridNodeViewInfo:

	col (int)
	row (int)
		Row/col position. Could be optimized and represented by a single
		int. But that would limit the no of rows and cols. What is the
		point in showing a graph that is bigger than 36K rows / cols.
	
	virtualCol (int)
		Used in node traversal algorithms. Again, this could be a short.
