Added spacing argument to CompoundNodule constructor.

This allows a user-specified spacing between the child nodules.
Added plug labels for hovered nodes.

- Added setLabelVisible/getLabelVisible to StandardNodule. Labels are oriented using NodeGadget::noduleTangent(), but are pushed away from the vertical to make them more readable.
- Added setLabelsVisibleOnHover()/getLabelsVisibleOnHover() to StandardNodeGadget. This shows the Nodule labels only when the node is hovered.
- Increased spacing between Shader nodules to make the text more legible.

This works, but because Gadgets don't receive enter/leave events during drags, we still need a mechanism for showing the labels when the node is being considered as a drag target.
Added iterators for StandardNodules.
Prevented StandardNodule from making invalid connections.

Previously it was allowing an output of a node to be connected to an input of the same node.
Added StandardNodeGadget connection snapping.

When a connection is dragged onto the node itself, it finds the closest appropriate nodule and forwards the drag/drop events on to it. This makes it much easier to make connections as less precision is required from the user.
Made label popups less annoying.

They now only popup when hovering over a nodule rather than anywhere in the node. All the labels for the inputs or all the labels for the outputs are shown at a time, but not both together.
Removed dead code.
Added popup plug labels when dragging a connection to a node.

Only those plugs which would accept the incoming connection are labelled.
Fixed Connection endpoint snapping.

Connection endpoints now snap correctly to the destination nodule, even when the NodeGadget is the actual destination of the drag.
Made unconnected endpoint tangents neutral.

Prior to this they pointed in the direction of the last thing they were connected to, which didn't look right when then approaching a node with a different orientation.
Embiggenned hovered nodule labels.
Fixing text colour.

The font is an alpha texture, which means it has values of ( 0, 0, 0, a ). Previously we thought it was ( a, a, a, a ), and this error meant that text was always black.
Tweaked default style to work a bit better with white text.