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.
Merge pull request #562 from johnhaddon/connectionPlugValueWidget

Connection plug widget