Disabled StandardOptions camera and resolution by default.

Having them on by default was confusing - none of the other nodes do it, and since there's no good default value for the camera, you end up with every StandardOptions node resetting the camera to "".
Implemented PathPlugValueWidget.setHighlighted().

Now the main path widget is highlighted properly so it's obvious when drag and drop operations are afoot.
Added array data support to PlugValueWidget drag and drop.

If an array of length 1 is dragged onto a PlugValueWidget, and the array element if of an appropriate type, then the widget will accept the drag. The biggest benefit of this is that objects can now be dragged from the Viewer and SceneHierarchy into path fields such as the AimConstraint target or the StandardOptions camera.
Added ViewportGadget::set/getCameraEditable() methods.

When the camera is not editable, the user is prevented from reframing the viewport using the usual camera interaction tools.
Fixed PathWidget menu positioning when used as a GLWidget overlay.

We can't trust mapToGlobal() to be of much use when we're using graphics views - by calling bound() we get to use the the wonderful workarounds implemented therein.
Added support for "divider" Metadata in viewer toolbars.

It works in the same way as it does in the CompoundPlugValueWidget, placing a divider after the plug with that metadata.
Implemented "look through camera" in SceneView.

This is a first pass, and will need updating to support properly showing a resolution gate with appropriate padding. That gets into much bigger questions of how we represent cameras in Cortex, how we convert them out of Maya and Houdini and how we create them in Gaffer though, so will need further discussion.
Simplified toolbar label removal for SceneView lookThrough plug.
Updated JH build options.
Added missing pointer typedefs.
Hid the look-through camera in SceneView.

This is achieved by setting the visibility attribute on the camera using a preprocessor node. Also fixed bugs where entering invalid paths for the camera would throw uncaught exceptions - it now just causes the view to be locked in the current position.
Added previous root node to GraphGadget::rootChangedSignal().

This matches the way GraphComponent::parentChangedSignal() works - It's a lot more useful if you know both the new and the old roots. This does represent an API change but I'd be very surprised if there's any affected code out there.
Made NodeGraph restore previous framing when changing root.

This makes popping in and out of Boxes a lot less confusing, because you now pop back to the same framing you had when you left.

Fixes #626.
Merge pull request #673 from johnhaddon/viewerCamera

Viewer camera
Merge pull request #676 from johnhaddon/nodeGraphFraming

Node graph framing save/restore