Refactoring private StandardGraphLayout::connections() into GrapGadget::connectionGadgets().

Because it's of more general use elsewhere.
Implemented node snapping during drags in the Node Graph.

This is achieved by calculating offsets which cause snapping once in dragEnter(), and then snapping to them where possible in dragMove(). The offsets are stored as a sorted vector in each axis so that the closest snap point can be found quickly. Nodes snap to their inputs and outputs such that nodes are centered, connections are horizontal/vertical and nodes butt up nicely to each other.

Closes #47.
Merge pull request #312 from johnhaddon/nodeDragSnapping

Node drag snapping
Added searchText for menu items with spaces in them.
Optimised ViewportGadget::dragMove().

We don't need to try to update the drag destination if we have one already and the drag data is a NullObject. This goes some way to addressing #283, raising the framerate for a decent size graph from 20fps to 30fps.