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.
Updated Parameterised UI to avoid use of deprecated arguments in PlugWidget.

Parameter descriptions are now mapped via the Metadata and displayed by the standard PlugValueWidget code. ParameterisedHolderNodeUI is now correctly registered for ParameterisedHolderComputeNode.
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.
Simplified the computeChannelDataReader to remove the aquisition of all channels from the OpenImageIO cache despite only requiring one.
Removed the associated "todo" from the ImageReader.
Merge pull request #380 from johnhaddon/plugDragDrop

Plug drag drop
Merge pull request #381 from johnhaddon/parameterisedHolderMetadata

Parameterised holder metadata
Merge pull request #387 from goddardl/ImageReaderSingleChannel

ImageReader optimisations.
adding .lscc files to PathPreview