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_.
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.
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.
Fixed ScriptNode::deleteNodes() for nodes without enabled plugs.

Some nodes might implement correspondingInput() but not enabledPlug(), and we'd still like to reconnect appropriately when we delete them. The upcoming Dot node is a good example of that.
Added Dot node.

This is just a simple organisational tool for complex graphs. It has only "in" and "out" plugs which must be created using the `Dot::setup()` method after construction - since Gaffer's plugs are strongly typed, it's not possible for the Dot to create plugs upfront. Internally the input is passed through directly to the output via a connection, so the dot does nothing computationally, it's just useful for adjusting the layout of the graph.
Added UI elements for the Dot node.

Empty dots may be created from the node menu - dragging an existing nodule or connection on to them then adds the necessary plugs and connects the dot up. Alternatively, the right click connection menu may be used to insert dots into the middle of an existing connection.
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 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.
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.
Added failing nodule position tests for Box and Dot.

They both fail to position nodules correctly when nodes are copy/pasted. This is because the metadata is set on the nodes after creation, by which time the UI code has already decided where to put the nodules.
Added customisable edge gadgets to StandardNodeGadget.

This allows custom gadgets to be placed alongside the nodules on each side.
Added support for changing nodule position on StandardNodeGadget.

This fixes the failing Dot and Box UI test cases, and will also provide the basis for users editing the position of nodules interactively on Boxes.
Made Dot UI optional on a per-app basis.

Some apps might be using graphs in such a way that Dots make no sense.
Fixed clang compilation failure in Dot node.
Fixed include order in LinearContainer.cpp.