2d viewer enhancements

This pull request implements exposure, gamma and colourspace controls for the 2d viewer, addressing #571 and #573. This new functionality exposes bugs and poor performance in a number of places in the GafferImage module - these are addressed in a series of pull requests I'm about to make, each of which will depend on the previous one. If you plan on testing the new features, then I'd recommend doing so using the code from the final request - I'm just breaking it down into separate requests to aid with the code review (if you'd rather have one giant request anyway then just look at the last one).

In this request, it's worth paying particular attention to 8b90c54, which will have an affect on the shader ball viewer - although the old tests still pass I've done limited testing there, and the viewer will need updating to take advantage of the new features anyway.