Reduced occurences of accidental connection snatching.

GraphGadget::updateDragReconnectCandidate will early out if there are no free output plugs, or if a free output plug defines a corresonding input which is not free. Fixes #325 and Fixes #313. Fixes #283 enough that I think we should close it, lest it be open for all eternity.
Fixed a bug in ImageProcessor that was causing a segfault when the node has an output that is not an ImagePlug.
Added test cases for the ImageTransform node.
Modified the image processor to prevent the code from wandering into python-land.
Fixed a bug with the reformat node where it wasn't hashing the input correctly.
Added a test cases for the Reformat node which tests the dirty propagation and the format hash.
* Refactored GafferImage::Filter to have a better interface whilst removing the need for the construct() method.
* Changed the Sampler to use the new Filter interface. Filters now have to be passed into the Sampler's constructor.
* Fixed bugs in the Sampler that:
	- Caused incorrect results with negative sample areas.
	- Samples required to compute a filtered sample were being clamped to the sample area even when the resulting sample was inside.
* Modified the Reformat node to use the new Filter and sampler interface.
* Updated bindings for the Sampler and Filter classes.
* Added filtering support for the ImageTransform node.
Added a shared look-up table for the filter class.
 * Chaged the filters to use floats after running some tests and finding out that the use of doubles made no difference to the results.
 * Fixed a few bugs with the sampler and refactored after doing some profiling.
Added the new image transform node with sub-pixel filtering.
Added a GIL release within ExecutableBinding::execute to stop a deadlock when writing the output of the ImageTransform to disk.
Made the filter's constructor private.
Fixed a typo.
Added a method to the ChannelMaskPlug which removes channels from a list of channel names until the list contains only channels with a unique channel index.
Added test cases for the above.
Added the ImageStats node along with it's test cases.
Removed an invalid sanity check within GafferImage::ImagePlug.
Made suggested changes.
Made the plug accessors public.
Made minor changes to the hash function.
Added an early-out to the compute method.
Fixed serialisation of the FormatPlug.
Separated layout mechanism between different apps.

Now each app has its own set of layouts, which will not interfere with each other if the two apps are loaded in the same process (for instance an asset manager and a shader ui both being loaded in maya). Rather than a global layout registry, layouts are now stored on a Layouts class (with member functions identical to the old global functions) and the layouts for a given application are accessed via Layouts.acquire( application ).

Note that this is not only a compatibility break in the API, but also that any saved layouts will now be broken. Paulo is happy to deal with the API break, and I'm happy to manually fix any saved layouts if necessary.

Fixes #225.
Added a test case for the FormatPlug's serialisation.