Removed **kw use for specifying auto-parenting arguments.

This means that at least Gaffer's internal code is ready for when we remove the old mechanism in #655.
Added an auto-load preset for ops.

This is created using the usual preset save dialogue, and loaded automatically by the op app and the browser app in op mode. The preset is not auto-loaded in the case that the op app command line specifies a different preset or any arguments - in that case it is assumed that the caller wishes to specify the parameter values themselves.

Fixes #804, and hopefully doesn't cause any "your pipeline is now entirely at the mercy of presets anyone can make at any time" problems of its own.
Merge pull request #829 from johnhaddon/defaultPreset

Default preset
Added a failing test case to GafferImageTest.ImageTransformTest that highlights a bug that has
been introduced since the node was first written.
Fixed bug in ImageTransform.

This was caused by ImageTransform::hashChannelData() not correctly including the tile origin in the hash. For transforms where two output tiles share the exact same set of input tiles affecting them, we were computing exactly the same hash for both output tiles, even though they each would filter the pixels in the input tiles totally differently.

This bug was introduced in 78b8739f1867ecd3b660838d384cdd6083734d92, where I refactored the hash computation for images. Specifically, in that commit it became the responsibility of derived classes to hash in the tile origin where necessary whereas before the SceneProcessor _always_ hashed in the tile origin whether it was necessary or not. The old code resulted in unnecessary computation for networks like Constant->Grade, where although all the tiles have the same hash in the Constant, they would have different hashes in the Grade. The new way of doing things is for sure better, provided you're not a numpty like I was and fail to hash in the tile origin where relevant.

Also renamed the test case, so it actually makes sense now we've fixed things - in any case we should have used @GafferTest.expectedFailure to decorate it in the first place so we could still give it a meaningful name.
Simplified ImageTransform::channelDataHash() and removed todo.

Using the less verbose method of hashing all the children of a CompoundPlug.

The comment in the todo was inaccurate - ImageProcessor no longer does any hashing of the tile origin. We also won't be changing the coordinate space that tile origin is specified in - tile origin, display window, and data window are all specified relative to the same origin for good reasons - sanity and ease of understanding. There's no reason the described optimisation couldn't work with the origin we have, but it seems best to implement in a node which specifically does axis-aligned integer shifts in the image without any filtering.
Merge branch 'goddardl-ImageTransformBug'
Removed collapsible container from ImageTransform transform plug.

It was annoying having to pop it open every time.
Added image file filter to ImageReader and ImageWriter dialogues.
Bumped version to 0.94.0 and updated Changes file.
Added a test case demonstrating issue #837.
Replaced GafferScene::Render base class with RendererAlgo.h header.

The base class didn't provide any useful functionality as far as abstraction was concerned - it was just a place where we put utility functions the derived classes needed for talking to renderers. Since that functionality could be useful elsewhere, it makes more sense to provide it in a namespace available to all.

There is similar functionality buried in SceneProcedural that we should move to RendererAlgo.h at a later date. For now we're just moving the code from the Render class, because we need to move the Render class out of the way to do implement some needed refactoring of the Executable code.
Simplified Executable nodes.

I originally suggested to Lucio that he develop the Executable nodes using multiple inheritance of an Executable interface class, so that nodes could be both say a SceneNode and also Executable. That turned out to be a bad idea because the class hierarchy was rather confusing and it put the onus on developers to remember to call various methods to add plugs, test inputs were accepted etc. This led to problems like the crash bug in #681, and was just generally a bit more awkward than necessary.

This commit simplifies things so there is now just a single ExecutableNode base class which fits in nicely with the DependencyNode and ComputeNode base classes. The implementations for the various derived classes are now a fair bit simpler, and the bindings are performed with a new ExecutableNodeClass which matches nicely with the NodeClass and DependencyNodeClass we already have.
Revised todo for a custom ExecutableNode UI.
Added return value check for ExecutableRender system command.
Added todos for ExecutableNode::Task.