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.