Moved OSLImage::shadingEngine() to OSLShader::shadingEngine().

It makes more sense there as the shade node is the one responsible for representing shaders, and it was weird that OSLObject had to use OSLImage functionality.
Added arbitrary channel and layer support to OSLImage.
Fixed dirty propagation through OSLShader closure outputs.
Moved OSLObject and OSLImage shader input to the left of the node.
Added V3fVectorData support to OSLRenderer user data queries.
Added arbitrary primitive variables output to OSLObject.
Improved OSL processor shader input acceptance.

- Only accepts OSLShader nodes if they hold a surface shader, as other shader types can't be used directly.
- Also accepts Box and ShaderSwitch connections so that shaders can be connected indirectly.
Disabled caching of OSLImage channelData plug.

Effectively it is cached already in the __shading plug, and we don't want to count the memory twice.
Fixed disappearing 0 values in OSLObject and OSLImage.

The problem was that we were using the weight of a debug closure to specify the value for channels and primitive variables. OSL optimises away any closures with a zero weight, so we were ending up with no closure, and therefore were unable to correctly manipulate the image/object. Storing the value as an internal attribute on the debug closure and always using a weight of 1 works around this issue.
Replaced OSL Sum with OutObject and OutImage shaders.

Although these have identical functionality to the Sum shader (they just sum a bunch of closures), it's good to have shaders with names that make it clearer what their purpose is. Later on we may also be able to use metadata to limit the input closures to only come from the appropriate Out* shaders.
Revised shader naming convention to use UpperCamelCase.

Since the C++ analogue of directories full of shaders in is namespaces full of classes, this is more consistent with the rest of Gaffer. It's also convenient to be able to not have to worry about shader names clashing with function names.
Fixed unwanted copy/paste Plug.setValue() calls.

When the input to a plug wasn't part of the selection being copied, we were computing the input value and storing it as a setValue() call in the serialisation. This was bogus, because any computed value can be dependent on any part of a Context, and the Context in which we perform the serialisation may not be suitable for computing the value. Now copy/paste with excluded connections causes the plug to revert to its default value, which is more like the disconnection behaviour.

There is an argument that we should actually be outputting a setValue() call, but for the value that would exist if the connection was removed, but for now we've decided that this approach is sufficient to fix #740.

As for a fuller fix, there are still some open questions about how disconnection should affect the plug anyway. Perhaps for plugs with inputs which aren't from a ComputeNode (just a direct connection from a promoted plug for instance), there is an argument that they should retain the connected value rather than revert to their previous value. When we resolve these questions we could also revisit this issue.
Removed FormatPlugSerialiser from the public interface.

FormatPlug isn't intended for use as a base class, so there is no need to expose the FormatPlugSerialiser for subclassing.
Refactored FormatPlugSerialiser to subclass ValuePlugSerialiser.

This allows us to remove a bunch of code which appears just to have been copy pasted a long time ago, since when we have made changes to the original. Also removed comment which appeared not to reflect the code at all, and added a todo to find out why we need to serialise all the registerFormat() stuff anyway.
Tidied up GafferImage::Format bindings.

- Fixed include guards (GAFFERIMAGE instead of GAFFER)
- Removed FormatBindings namespace
	- Introducing a new namespace for just one function isn't really in the Gaffer style
- Made formatRepr take a reference rather than a pointer
	- It's not an optional argument, and Format variables are rarely accessed via pointer
- Removed unused includes
- Put internal stuff in an anonymous namespace
- Fixed inaccurate namespace comment
Merge pull request #747 from johnhaddon/oslMultipleChannels

Multiple primvar support for OSLImage and OSLObject
Merge pull request #748 from johnhaddon/copyPasteValues

Copy paste fix
Bumped version to 0.91.0 and updated Changes file.