Scoping the context before asking for the currentPreset.

Fixes #1121.
Added PlugValueWidget.childPlugValueWidget().

Prior to this we had just been implementing the method directly on child classes, with no default implementation in the base class. This was because previously Plug could not have children (only CompoundPlug could), so it made no sense on the base class. Now that Plug can have children and CompoundPlug is flagged for removal, it makes sense to have the method defined on the base class.

Fixes #1123.
Fixed ImageView context scoping.

It wasn't using the right context when evaluating the various colour samplers. The fix continues the tradition of just shoving more and more stuff into the one monolithic class - this needs to stop.

Fixes #1124.
Added some comments regarding refactoring ImageView.
Merge pull request #1122 from andrewkaufman/presetFix

Scoping the context before asking for the currentPreset.
Merge pull request #1125 from johnhaddon/fixes

Fixes for #1123 and #1124
Scoping the context before getting the channel names.
ImageWriter now creates the necessary directories before writing the file.
Merge pull request #1128 from andrewkaufman/imageQuickFixes

GafferImage Quick Fixes
Deferred creation of plug presets submenu.

In case someone does something like registering a preset which makes calls to an outrageously slow database somewhere.
Merge pull request #1129 from johnhaddon/deferredPresetsMenu

Deferred creation of plug presets submenu.
Added a Refresh button to ImageReaders.
Merge pull request #1130 from andrewkaufman/imageCache

Added a Refresh button to ImageReaders
Updated Changes file.
Tidied up Style headers.

Binary incompatibility :

- Reordered Style virtual methods.
Updated Style bindings.
Added support for user colour overrides in Style methods.

This also meant adding a new renderNodeFrame() method to distinguish between frames drawn for nodes (where a user colour makes sense) and those drawn as normal frames (where it doesn't).
Added missing forward declare in Metadata.h.
Added support for specifying node, plug and nodule colours via metadata.
Reimplemented UIEditor metadata editing with custom widgets.

These are analogous to the PlugValueWidgets, and will make it easier to implement more complex editing (for colours for instance), and also provide a better API if we need to make it part of the public API at some point.