Stopped GraphGadget representing connections between two plugs on the same node.

Also changed a bunch of smart pointers to raw pointers in line with our "only use smart pointers when you need to manage ownership" rule.
Fixed bug whereby Plugs were accepting inputs from themselves.

Also removed todo which was done already.
Fixed LabelPlugValueWidget bugs.

It wasn't updating the label greyed-out state correctly on construction, only on a change to the plug. It was also greying out the label when a plug had a input connection - now it only greys the label out if it has been explicitly set to read-only.
Implemented highlighting for string, label, bool, numeric and compound numeric plug value widgets.
Added bindings for boost::signal::connect() overloaded with a group number.
Implemented drag and drop between 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.
Fixed shader nodes to cope with connections between parameters.
Added useful tooltips for all PlugValueWidgets.

Previously they were only available on LabelPlugValueWidgets created within a PlugWidget. Now they are available on all PlugValueWidgets, and are customised based on the type of widget.

Also deprecated label and description parameters for the PlugWidget - they should always come from the metadata now.
Made ValuePlug::settable() virtual and implemented it correctly for CompoundPlug.

Previously CompoundPlugs were being considered settable even if their children were not - they're now only considered settable in the case that all children are also settable.
Merge pull request #380 from johnhaddon/plugDragDrop

Plug drag drop