Adding 2D force-directed graph layout algorithm.
This gives us a way to visualize graphs that contain no
coordinate fields of their own, only points and edges.
The algorithm initializes point locations to random
locations and iteratively relaxes their locations using
edges as attractive forces and point-point distances
as repulsive forces, as well as a gravitic force
to keep disconnected subgraphs (e.g. forests, isolated
points) from escaping to infinity.