Added public Serialisation::acquireSerialiser() method.

This will allow more flexible serialisations to be made.
Added ValuePlugSerialiser::valueNeedsSerialisation() method.

This can be reimplemented by derived classes to provide more control over the serialisation of values.
Combined setValue() serialisation for CompoundNumericPlugs.

If none of the child plugs have a connection, then we can simply serialise the value with a single setValue() call on the parent.

Fixes #761.
Fixed broken Grid test.

It wasn't changed to take into account the new plug default values when we turned on GL line smoothing.
Fixed test failure in Bookmarks.acquire().
Privatised numeric and string PlugValueWidget implementations.

These were once private before, and then got unprivatised because something in Jabuka wanted to override them. As far as I can tell, that Jabuka code is now entirely defunct, so I'm reverting things to the way they should be. In refactoring the UI code for the PlugLayout stuff (and not being able to achieve everything I want yet) it became painfully obvious just how badly lots of exposed implementation details and protected methods can affect refactoring and maintenance burden, so I'm tidying these up now before it becomes an issue.
Fixed cursor bug in StringPlugValueWidget continuous update mode.

It would leap to the end of the line every time a character was entered - effectively preventing editing anywhere except at the end.

Fixes #796.
Fixed bug in non-editable MultiLineStringPlugValueWidgets.

It was trying to set the value of the plug, even when the plug was read only or had an input connection.
Added ViewportGadget viewportChangedSignal() and cameraChangedSignal().
Added SpacerGadget size accessors.
Fixed upside down nodule labels

This was occurring for certain tangents because we were only considering one rotation direction when detecting upside down orientations to be corrected.
Fixed overzealous Viewport drag tracking.

We would track drags whenever the mouse was in the autoscroll region at the edge of the viewport - even if the drag started there and the user was dragging the other way. This fix ensures that the drag doesn't start until the user has dragged further out of the viewport than their start position.

Fixes #550.
Added iterator typedefs for all GafferUI::Gadget subclasses.
Improved Box plug promotion.

Added ability to promote output plugs, and to promote plugs directly to the Box rather than to the user plug. The former is necessary for #262
and the latter provides a starting point for #801.
Fixed Box plug promotion to support ImagePlugs and ScenePlugs.
Fixed FilteredSceneProcessor to allow Box promotion of Filter plug.
Added GraphComponentClass and GadgetClass to improve bindings.

Now it is not necessary to remember to use the annoying DEFWRAPPERFNS macros that used to be necessary when binding GraphComponents and Gadgets to Python - the new classes take care of all that. This is part of a general movement away from macros and towards more *Class helpers in the bindings - other macros will be replaced in a similar fashion as we visit those parts of the code.
Added NodeGadgetClass to improve bindings of NodeGadgets.

No more nasty macros - moving things into line with the rest of the improved bindings. Still a few more to go...
Improved SceneHierarchy to view any output ScenePlug, regardless of name.

This improves compatibility with Boxes, where the user can make an output plug with any name they want.
Prevented PlugValueWidget creation for all ScenePlugs.

Prior to this, we were only preventing their creation for the "in" and "out" plugs on SceneNodes. We now prevent their creation anywhere, meaning that they are no longer created incorrectly for outputs or inputs to Boxes.