Renamed ImageNode::hash*Plug() methods to hash*().

To match every single other set of hash/compute methods in the project.
DependencyNode::affects() is now called for output plugs too.

It's becoming a common pattern to have internal plugs which hold the result of some intermediate computation which is worth caching in its own right. This was achievable in two ways :

  - By having two internal plugs. The first, an output, holds the computed intermediate value. The second, an input, receives this value by a connection and allows its use in further computations. GafferScene::Group was using this method. This method was correct, but fiddly to set up and had extra overhead in the form of the second plug and connection.
  - By having a single internal output plug, which holds the intermediate value and is accessed directly in further computations. Because affects() was not called for this output plug, implementations had to cheat and directly have inputs affect the final outputs, bypassing the internal plug during dirty propagation. GafferOSL::OSLImage was using this method. This method was slightly dodgy, but easier to implement and understand.

By calling affects() for output plugs as well, we can now implement the simpler second mechanism without having to resort to naughtiness in affects().

Note that it is possible for lazy affects() methods which were not checking the identity of the input plug appropriately to be tripped up by this - it's worth checking any node implementations in external packages before accepting this commit.
Optimised OpenColorIO with a new ColorProcessor base class.

Because the OCIO transform might mix the R, G, and B channels, the output for any channel depends on all three inputs. We were dealing with this very naively by doing all the work again for each channel. The ColorProcessor base class makes it easy to do this work just once, caching the results on the intermediate colorDataPlug() - the computeChannelData() implementation is therefore dead simple, simple passing out the right component from the intermediate results.

The new ColorProcessor base class also introduces a couple of conventions we should use everywhere (and backport to existing classes in time) :

- ColorProcessor::affectsColorData(). This forms a matching trio with hashColorData() and processColorData(), meaning that a derived class can do all of its work without having to override any of the virtual functions in more distant ancestors (previously it would have been necessary to override affects()).
- Interleaving the hash*() and matching compute*() methods in the .cpp file. Keeping the each hash next to its corresponding compute makes it much easier to verify that they are consistent.
Fixed OpenColorIO crashes on OS X.

Some googling seemed to indicate that these crashes should be limited to OS X - if we see similar crashes on Linux it's easy to enable to fix there too.