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 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.
Merge pull request #348 from goddardl/ImageStats

Image stats
Merge branch 'TransformFiltered' of https://github.com/goddardl/gaffer into goddardl-TransformFiltered
Refactored previous commit so the checks happen after selecting a reconnection candidate.
Fixed ImageStats for recent Sampler API change.
Fixed GafferSceneTest.OpenGLRenderTest crash.

This was caused by accessing the python API in Serialisation without holding the GIL. It was triggered by the change to ExecutableBinding which released the GIL in the execute() binding.
Merge pull request #356 from johnhaddon/perAppLayouts

Separated layout mechanism between different apps.