OpenColorIO node optimisation

This pull request builds on the 2d viewer enhancements, giving improved performance for the OpenColorIO node used for the colour space control. Only the last 4 commits are unique to this request. Implementers of custom nodes should pay particular attention to 35d19f8, as it can trip up lazy implementations of the affects() method.