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.
Made BlockedConnection and UndoContext non-copyable.

They don't have any sensible copy semantics, so removing the copy constructor removes a trap for people to fall into.
Added right click menu for Box plugs in NodeGraph.

This allows the renaming and deletion of promoted nodules.
Merge pull request #818 from johnhaddon/boxByproducts

Box bits and bobs