Added IECoreGL::State::ScopedBinding constructor overload.

This takes a bool indicating whether or not to perform the binding.
Changed IECoreGL::HitRecord::name field from InternedString to GLuint.

The HitRecord is a low level class intended for use with the Selector class which represents names as GLuint, so it makes no sense to use a higher level representation. This will allow the Selector to be used with simple integer names where that is more appropriate. Continuing to use the higher level representation is facilitated by the NameStateComponent nameFromGLName() and glNameFromName() methods.

Binary incompatibilities :

- Changed IECoreGL::HitRecord members
Added IECoreGL::Selector::loadName() overload to auto-generates names.
Removed IECoreGL/TextureUnits.h.

It was completely unnecessary, and served only to illustrate my ignorance of the OpenGL API.
Added IECoreGL::ToGLStateConverter.

This converts a CompoundObject representing a whole block of attributes directly into an IECoreGL::State object. Its current intended use is in Gaffer, where it will allow us to implement a faster Gaffer->GLScene coupling. This does duplicate some functionality from IECoreGL::Renderer, but we're justifying it by the Gaffer refactor being an important step towards a GL scene graph without an awkward Renderer interface in the way.