Made GafferImage::Format::getDisplayWindow() return const reference.
Fixed FormatData serialisation.

It could never have worked. Also moved the implementation of FormatData into its own file. Over time the Format class needs to be slimmed down until it's just a simple maths class - all the default format stuff would make more sense on the FormatPlug.
Tidied up Format.h.

- Moved inline implementations into GafferImage/Format.inl.
- Fixed include guards (GAFFERIMAGE_ not GAFFER_).
- Removed unnecessary friend declaration.
- Renamed m_aspect to m_pixelAspect to clarify that it isn't the aspect of the display window itself.
Added space conversion methods to GafferImage::Format.

Because Gaffer uses a Y-up coordinate system and Cortex and OpenEXR use Y-down, it's handy to have this documented somewhere and to have some methods for easily converting between coordinate systems.

Also added a todo in ImagePrimitiveSource.inl, to fix the display window computation and use these new convenience methods to make the data window and channel data match appropriately.
Improved GafferImage::Display node hashing.

Prior to this, the hash for every tile in the image was changed any time a new bucket arrived. This meant a lot of churning in the cache and a lot of unnecessary computation in the viewer, as exposure, gamma and lut were repeatedly being reapplied to tiles which hadn't changed but had new hashes.

This improves viewer responsiveness approximately 2x during an interactive render.
Optimised ChannelDataProcessor::channelEnabled().

There was no point getting the input channel names - it would be a mistake to call channelEnabled() with anything other than an existing channel anyway.

This change alone improves viewer responsiveness approximately 1.5x when receiving a render.
Removed deprecated ImageView( name, inputPlug ) constructor.

This was being used by old View subclasses which would pass their own input plug and then use setPreprocessor() to insert some conversion network. Subclasses should now use insertConverter(), following the example in GafferImageUITest.ImageViewTest.testDeriving.

This allows the simplification of various bits of the ImageView implementation.
Optimised ImageView internal connections.

Removing connections and replacing them with a plugSet callback which transfers the values gives a rather disturbing 1.5x improvement in ImageView update when viewing a Display node. This implies that there are some optimisations to be made when propagating static values through plug connections (we're currently relying on an unnecessary fake computation to do that every time the value is accessed, whereas we could be doing it as a one off operation before compute), but in the meantime it seems worth making this simple change which greatly improves the use of the render viewer.
Fixed GafferImageTest.DisplayTest.

It was relying on waiting a fixed amount of time for data to be received and processed on the DisplayDriverServer thread - sometimes the processing would take longer and the test would be performed before the data was processed, yielding failure. We now wait on semaphores connected to Display.dataReceivedSignal() and Display.imageReceivedSignal() to make sure the tests are performed at the appropriate time.
Fixed ambiguity in FormatDataBinding.

The "using IECore" wasn't necessary and was causing an ambiguity between IECore::FormatData and GafferImage::FormatData.
Fixed ImageView clipping default value (now off by default).
Merge pull request #701 from johnhaddon/displayOptimisation

Render view optimisation