Fixed highlighting bugs.

Widgets inside a highlighted tab would incorrectly display an inherited highlight state. This could be seen when dragging a node into the node editor with either nested tabs or a nested VectorData Widget. Fixed this by making the Widget css more specific (not selecting distant children of highlighted widgets) and overriding VectorDataWidget.setHighlighted to store the highlighted state explicity on the QTableView where it could be picked up easily by the stylesheet.
Fixed PathPlugValueWidget bug where it would attempt to change the value of a read only plug.
Fixed PathWidget bug where it would still do autocompletion and popup menus even when non-editable.
Added "user" plug to all nodes.

This provides a CompoundPlug where users can safely put any custom plugs they want, without fear of name clashes with existing or future standard gaffer plugs.
Added Box plug promotion API.

Promotion takes a plug on a node inside a Box, creates a matching plug on the Box itself, and uses that to drive the input to the internal plug. Box methods are provided to query whether or not can be promoted, whether or not one has been promoted, and to promote one. Once we have UI support for it this will form the basis for users to build macros/gizmos/thingos.
Added basic UI for Node::userPlug().

This just displays the plugs and provides a menu for adding a few plug types. Later we'll need to add a dialogue for specifying new plug properties (min/max/flags etc) and for modifying the layout and widgets.
Adding menu items for plug promotion.

The right click popup menu for plugs contains a "Promote to Box" entry which allows users to promote the plug to the box level.
Added TabbedContainer.insert() method.
Generalised Metadata class.

It can now store arbitrary key/value pairs for nodes and plugs, rather than just descriptions as before.
Added StandardNodeUI with improved features.

Removed the default implementation from NodeUI - this is now an abstract base class. Moved implementation to StandardNodeUI and improved it to support organisation of plugs into tabs via Metadata, and to support a header and a simplified (tabless) view.
Fixed CompoundPlugValueWidget summary/non-collapsed bug.

It would error while trying to apply the summary to a non-existent collapsible title.
Miscellaneous UI tweaks.

- Using a simplified form of StandardNodeUI when embedding the Filter ui inside FilterPlugValueWidget.
- Placing filter inside its own tab for FilteredSceneProcessors.
- Placing transform inside its own tab for ObjectSource nodes.
- Placing Shader name widget with Reload button in the header of the NodeUI.
- Allowing any callable that yields a NodeUI instance to be passed to NodeUI.registerNodeUI, rather than just NodeUI subclasses.
- Removing user tab from preferences ui.
- Improving ordering of StandardNodeUI tabs - Settings tab now always comes first.
Added context menus for EnumPlugValueWidget and BoolPlugValueWidget.

This necessitated rejigging the PlugValueWidget._addPopupMenu() code to use a belts-and-braces approach where it handles both right click events and also context menu events.
Fixing tests taking into account "user" plug.
Added Box color plug promotion test.
Fixed Box promotion of CompoundPlugs.

Formerly they didn't keep their values correctly when being promoted, because CompoundPlug::setFrom() had not been implemented.
Added LabelPlugValueWidget.

This provides a nice standard means of labelling a plug, providing the standard PlugValueWidget popup menu and creating a tooltip from the Metadata. The menu is of particular importance, as it makes the plug promotion capabilities available for color plugs and other compound plug types.
Added missing file.
Updating Changes.
Fixing typo.