Plug drag drop

This pull request implements drag and drop between the plugs in the NodeEditor. Drags are initiated on the label for the plug. Left drag initiates a drag for connecting plugs. Shift-left drag and middle drag initiate a drag for transferring values between plugs
. The drop mechanism doesn't worry about where the drag originated, so colours may now also be dragged from the viewer and onto a plug.

Conversions of number->color, vecN->colorM, vecN->colorN are implemented for value dragging. Connection dragging is based on Plug::acceptsInput so floats cannot currently be connected to colours automatically - if we can implement CompoundNumericPlug::acceptsInput() to accept inputs from NumericPlugs then this should just work.

Additionally fixed various bugs thrown up by having plug->plug connections on the same node.

Also added improved tooltips which document the new behaviour, and show the incoming connection in the heading. As part of this, deprecated the name and description parameter in PlugWidget, with the name and description always coming from the Metadata now, and being more consistently applied everywhere. This will require updates to the ParameterisedHolderUI, which I'll send in another pull request.