Fixed ObjectSource to work after create/undo/redo.

It was using an outdated way of using the result of an internal computation in the computation of another output - since DependencyNode::affects() is now (and has been for a long time) called for output plugs as well as inputs during dirty propagation there is not need for the additional intermediate plug.

Although this fix is good in that it tidies up some code, I suspect there's another problem somewhere which caused the input to the internal plug to be removed upon undo but not restored upon redo. This may need investigating in its own right at some point.

I have no idea why the unrelated SceneWriterTest was mucking about with the private __inputSource plug - it had no business being there.
Merge pull request #1114 from johnhaddon/objectSourceUndoRedoFix

Fixed ObjectSource to work after create/undo/redo.
Added nodeGadget:minimumWidth metadata.

This is supported by StandardNodeGadget and replaces a previously hardcoded value.
Improved StandardNodeGadget drag/drop handling.

StandardNodeGadget accepts drag enter/move/leave/drop in order to snap drags to the nearest nodule, which makes the node graph much easier to use. But it was returning true from these event handlers regardless of whether or not it was actually performing any snapping. It now returns false if not performing snapping, enabling other handlers to step in and do their own thing.
Added Nodule::updateDragEndPoint() virtual method.

This mirrors ConnectionGadget::updateDragEndPoint(), allowing the recipient of the drag to update the Nodule with the location of the new drag endpoint. Previously the StandardNodule had been using similar functionality privately, but now it is open to other recipients of drags.

Binary incompatibility :

	- Added virtual method to Nodule.
ScriptNode tweak. Explain me!
Added Dot node.
DotUI
Made StandardGraphLayout::connectNode() work with fresh Dots.
Updated node acceptsInput() implementations for Dot nodes.

Some nodes require that their inputs come from a specific node type, but they also need to accept Dots as an intermediate node which can deliver that node type indirectly.
Added Menu.popupPosition() method.

This is intended for when a menu item wishes to know the exact position of the cursor when the menu was popped up, rather than where the cursor was after the menu was moved fully onscreen and the user moved the cursor to choose the item.
Improved positioning of nodes created by the NodeMenu.

They are now placed where the cursor was when the menu was opened, rather than at the top left corner of the menu itself.
Improved support for functools.partial() callables in Menu commands.

We now introspect them to see if they contain "menu" or "checkBox" arguments, and pass those arguments appropriately where necessary.
Positioning inserted dots at the cursor.
Added bindings for DotNodeGadget.

Without this, a DotNodeGadget is returned to python as a RefCounted instance rather than a Gadget, preventing the right click node menu from working in the NodeGraph.
Got Dot connections appearing on the right sides of the dot.
Fixed ShaderSwitch and Shader UIs to work with Dots.

Specifying nodule positions with metadata rather than with the deprecated argument to the StandardNodeGadget constructor allows the Dot to get the nodule positions right. This is part of the continuing transition to using metadata rather than code to describe as much of the UI as possible.
Got snapping working properly when connecting to a virgin Dot.
Fixed StandardStyle border widths to be independent of border radius.

This stops the Dot drawing with a thicker border than the other nodes. Also made the border and connection colours slightly less _black_.
Made Dot slightly larger.