Added support for framing nodes and plugs dragged to the NodeGraph.
Added custom formatters and name depth control to NameLabel.

The formatters can be used to control the conversion from the name of the GraphComponent to the label text. The number of components controls how much of the GraphComponent's ancestry to display in the name. When displaying more than one level of name, the NameLabel copes properly with renaming of parents and even reparenting.
Added Widget.isAncestorOf() method.

This behaves identically to GraphComponent::isAncestorOf().
Added ButtonEvent.button field.

Previously we had only a buttons field, which held the state of the buttons at the time the event was generated. This meant that we had no way of knowing which button had actually triggered the event, which in particular meant that it was impossible to know what button was released in a buttonReleaseSignal() - because the buttons field now shows no buttons. The new button field simply holds the button that triggered the event.
Fixed overzealous pinning of nodes dragged to editors.

Specifically, a node dragged from within an editor would be accepted as a pinning-drag into that very same editor. Now a drag must originate from outside the editor to be considered for pinning.
Stopped GafferUI.Frame from expanding beyond the min/max of its contents.

It now behaves like the other containers in this respect. Frames can still expand, but now only when their contents want to. Updated ErrorDialogue for this fix by adding some appropriate Spacers, and updated it to use the newer "with" syntax for building UIs at the same time.
Added highlighted rendering for frames.
Added ConnectionPlugValueWidget.

This is a fallback widget for plugs that otherwise have no value to display. It shows the input connection to the plug, and provides means of navigation to that input.

Fixes #130.
Added post-execution behaviours to OpDialogue.

These allow the UI writer, the Op writer or the user to choose whether or not the dialogue should be closed after the Op has executed.

Fixes #560.
adds ability to specify the widget to be grabbed.

useful for capturing pop-up dialogues.
example:
cc = GafferUI.ColorChooserDialogue()
cc.setVisible(True)
application.setGrabWidget(cc)
Merge pull request #562 from johnhaddon/connectionPlugValueWidget

Connection plug widget
unnecessarily verbose
Fixed PathListingWidget errors when "/" path is invalid.

Invalid root paths occur quite frequently in the SceneHierarchy editor when an invalid filename has been entered in a SceneReader or AlembicReader. Those nodes will still display an error, but the SceneHierarchy now won't output a confusing stacktrace which distracts people from the root cause.

Fixes #528.
Merge pull request #563 from johnhaddon/opDialogueCloseBehaviour

Added post-execution behaviours to OpDialogue.
Merge pull request #570 from johnhaddon/pathListingWidgetFix

Fixed PathListingWidget errors when "/" path is invalid.
Merge pull request #568 from bentoogood/screenGrabForDialogs

adds ability to specify the widget to be grabbed.
Added Alt click modifier for selecting upstream nodes in GraphGadget.

Alt+Shift click adds all upstream nodes to the selection. Alt+Ctrl click removes all upstream nodes from the selection. Alt click alone remains the domain of the ViewportGadget camera controller, but the ViewportGadget now passes through Alt+Something presses, not using them for camera motion any more.

Also added GraphGadget::upstreamNodeGadgets() public method which is likely to be handy in the future, and was necessary for implementing this.

Fixes #437.