Improved dirtiness propagation.

This ensures that dirtiness will only be signalled once for any given plug during dirty propagation, and that all signalling is performed at once after the dependency traversal. Prior to this we could end up doing duplicate signalling and also be emitting signals while the graph was still being edited by slots connected to plugSetSignal() and plugInputChangedSignal(). See comments in DependencyNode.h and DependencyNode.cpp for more details.

We also now emit plugDirtiedSignal() when a value has been edited with ValuePlug::setValue() - this means that observers need only ever use plugDirtiedSignal() instead of also having to use plugSetSignal().
Removed use of plugSetSignal() where possible.

Because plugDirtiedSignal() is now also emitted when values change via ValuePlug::setValue(), we can drop the use of plugSetSignal() for updating UIs. This is simpler, more efficient, and prevents updates being performed while the node graph is part way through being rewired.
Added Style::characterBound() method.

This returns a bounding box guaranteed to cover the largest character in the font. It is useful for correctly positioning the text baseline among other things.
Added scaling to the Backdrop node contents.

Scaling is controlled via a new "scale" plug on the Backdrop node, and is used to scale the whole text contents of the backdrop, rewrapping text as necessary.
Improved Backdrop selection and resizing.

The resize handles are now a bit larger (5 pixels) and easier to hit. The top resize handle scales down as the the user zooms out, to prevent it from stopping the user from picking the title area to select the node. Also fixed a bug which meant there was no immediate redraw when an empty Backdrop was selected.
Fixed Backdrop cut+paste bug.

More specifically, backdrops were selecting their children (framed nodes) whenever they themselves were selected, regardless of the source of that selection event. When a backdrop was being pasted, it was being pasted over the top of the original, getting selected, selecting all it's children (including the ones from the original, because they were contained in the bounds) and then getting moved to the new location, along with the bogus selected nodes.

This fix moves the responsibility for propagating selection to the backdrop children to the GraphGadget, meaning the propagation only occurs on buttonPress events, and not at any other time. This does increase the coupling between the GraphGadget and Backdrop but is much better than not fixing it. You could also argue that there was implied coupling before, because the Backdrop code was assuming it knew what the GraphGadget would be doing, even if it wasn't using the GraphGadget API.

Fixes #539.
Merge pull request #543 from johnhaddon/deferredDirtyPropagation

Improved dirtiness propagation
Merge pull request #546 from johnhaddon/backdropImprovements

Backdrop improvements
Added a bunch of handy attributes.

This includes all the attributes currently requested in #275.
Merge pull request #547 from johnhaddon/moreOptionsAndAttributes

Added a bunch of handy attributes.
Changed public build to use older 3delight version.

This avoids downloaders needing a more recent version with RiProceduralV.
Bumped version number and updated Changes file.
Added a MapOffset node for offsetting texture coordinates.

The offset is specified as a combination of a V2f and a UDIM tile number.
adds new toggle icons

* for use with compound plugs that have an enable/disable toggle
* contributes to #65
* new icons labeled "toggleOn", "toggleOnHover" "toggleOff" "toggleOffHover"
* no disabled modes - can be added if required
adds disabled toggles

* "toggleOnDisabled"
* "toggleOffDisabled"
Added even-more-simplified mode to StandardNodeUI.

This mode is specified using the new Bare value, and displays the single main column without a scrollbar. This makes it particularly suitable for embedding in other UIs, and in particular the FilterPlugValueWidget is now using it to prevent the triple-scrollbar layout it used to have when being displayed very small with a PathFilter in it.

Fixes #549.
Merge pull request #551 from johnhaddon/scrollLessNodeUI

Added even-more-simplified mode to StandardNodeUI.
Made Plug::acceptsInput() consider current output connections.

A plug will now never accept an input if any of its immediate outputs would not themselves accept the same connection directly. This allows the RenderManShader node to accept connections to Boxes without them being used a loophole to bypass the usual connection checks for coshaders.

Fixes #532.
Specified specific version for default Cortex source.

Before, the public build was being made with some unspecified Cortex version straight off the master. Now it will be made with a specific released Cortex version, so others can reproduce the same build.
Fixed GraphGadget for NULL return from NodeGadget::create().

This allows NodeGadget::registerNodeGadget() to be used with functions that will return NULL to signify that the node should be hidden.