First version of the clamp node
Setting defaults in plug constructors
Using the recommended method of comparing the ancestor of the input to the plug
Updating to use iterators, updating testing logic to be more clear
switching to use isAncestorOf as suggested, in order to avoid the ancestor call which apparently can trigger an evaluation through python
adding a doxygen comment and fixing some tabbing issues
Merge branch 'clampNode' of https://github.com/richardmonette/gaffer into clamp

Conflicts:
	include/GafferImage/TypeIds.h
	python/GafferImageTest/GradeTest.py
	python/GafferImageTest/__init__.py
Fixed Clamp virtual method declarations.

In the ridiculous amount of time it took for me to merge it, the names had changed.
Tidied up Clamp.h includes.
Removed nonsense from Clamp::hashChannelData().

It was constructing a temporary context identical to the original - copied straight from the same bad code in Grade::hashChannelData() I think. Also added the compulsory call to the base class.
Made Clamp::channelDataHash() independent for each channel.

Also fixed test so it was actually using the hash for the plug and not the hash of the data pulled out of the plug. Another one copy-pasted from the Grade I think.
Removed unnecessary getValue() calls in Clamp::processChannelData.

We were getting the colour value (4 getValue() calls) and then accessing the component we wanted - getting just the value from the specific child plug we need removes this overhead.
Moved Clamp::channelEnabled() shortcuts to Clamp::enabled().

Because the shortcut condition isn't channel dependent, it's slightly more correct to implement it at the enabled() level rather than the channelEnabled() level. It also removes a tiny amount of processing, although I doubt that is significant.

Also fixed the test case for checking pass-through hashes - it was testing the hash of the image data after retrieving it. This merely checks that the node hasn't changed the data during compute, but this alone is not enough to ensure that redundant computation is not performed and that cache entries are shared between a disabled Clamp node and its input. For that to happen, the result of the Clamp::hash*() methods must be a pass-through of the input hash*() methods, which is what the test now checks.
Optimised Clamp::affects().

Calls to isAncestorOf() are slightly more expensive than the simpler "inputParent ==" test because they must traverse all the way from the plug to the application root before discovering that the candidate is not an ancestor, and this must be repeated for each test.
Fixed inconsistent use of min/minimum in Clamp node.

It's debatable whether min or minimum should be the preferred form, because generally we don't abbreviate in Cortex/Gaffer, but in this case it seems that most of the codebase does use the abbreviated form. In any case, it should at least be consistent within the same class.
Merge branch 'clamp'
Fixed tabs vs spaces problem.
Updated default Cortex version to 8.0.0b4.