Make visualisation react to layout changes.

The graph controller listens for a 'layout.changed' event, raised by various
other controllers, and by a window resize handler.
Then the graph controller tells the force layout the new dimensions of its canvas,
causing the 'gravity' force to pull nodes back towards the new center.