Purpose: 
--------
To provide a useful, extensible framework for graph-based applications using Togra


Overview:
---------
* A new type (Graph) that stores knowledge about graph connectivity
* A new object (GraphRender), conforming to Render, that is able to draw
	graphs to the screen
* Modification of the existing Mixin (GraphMixin), to make use of Graph types


The Graph type:
---------------
The Graph type will encapsulate three concepts:
	(1) participants in a graph (nodes)
	(2) connections between nodes
	(3) (optional) groups of interconnected nodes
the Graph interface will consist of:
	GetNumConnections() -> int
	GetConnection(int) -> (Node, Node, length)
	SupportsGroups() -> bool
	GetNumGroups() -> int
	GetGroupSize(int) -> int
	GetGroupConnection(int, int) -> (Node, Node, length)
Nodes will be of type Render.

The python interface to Graphs will likely contain methods to add and remove 
nodes and connections; as well as query methods for contained connections.

Graphs will be required to manage their own groups if these are supported.


The GraphRender object:
----------------------
The GraphRender object will contain a slot for a Graph object, and will be
responsible for rendering that object in whatever manner is desired.  Different
GraphRender objects will provide different visual properties.


The GraphMixin object:
---------------------
This object will be modified to allow the installation of any number of
force schemas.  Force schemas will have a TARGET and a TYPE.  Valid targets are:
	ALL_PAIRS (force will act between all pairs)
	ALL (force will act on all nodes)
	ALL_CONNECTED (force will act between all connected pairs of nodes)
	ALL_GROUP (force will be calculated per group)
Valid types are:
	INVERSE_SQUARE strength max_distance
	LINEAR offset strength max_distance
	CONSTANT strength max_distance
	PIECEMEAL [(type, cutoff)] max_distance
ALL schemas also require further arguments indicating the direction of
	the force:
	FROM location 
	CONSTANT direction
	WITH_VELOCITY

The mixin should be able to handle eliminating non-local effects when 
max_distance is set
