Updated GafferUI for recent IECoreGL::HitRecord API change.

The HitRecord now simply stores an integer rather than an InternedString for the name, so we use NameStateComponent to provide a mapping to names. In future, we may ditch the use of names entirely to avoid the unnecessary construction of many InternedStrings.
Added GafferSceneUI::SceneGadget class.

This contains a small OpenGL scene graph implementation which can be selectively updated based on plug dirtiness in Gaffer. This is an improvement over using IECoreGL::Renderer with GafferScene::SceneProcedural, which has to regenerate the entire scene for every Gaffer change.

This is intended to form the basis for scene viewer with improved performance.
Reimplemented SceneView using SceneGadget.

This gives a 3-20x speedup in tests where only the transform plug is being dirtied. It is of particular benefit when the objects are in the scene take significant amounts of RAM, as by only computing the new transforms we entirely avoid the cache thrashing that would otherwise occur.
Fixed SceneGadget deadlock with python expressions.

The GIL must be released on the calling thread any time the SceneGadget might evaluate the scene on a TBB worker thread, in case the node graph contains nodes which use Python.
Fixed Grid node shader assignment.

It was still using a key of "shader", but we now use "gl:surface" to differentiate OpenGL shader assignments from those for other renderers.
Reimplemented SceneView grid using SceneGadget.

This allows us to remove the annoying little WrappingProcedural class.
Removed motion blur preprocessor from SceneView.

This is no longer needed because SceneGadget ignores motion blur entirely.
Removed bloat from SceneProcedural.

It had a lot of features which were shoehorned in to support SceneView features - happily these are no longer needed now we have SceneGadget to form the basis of the SceneView.
Added todo to RenderableGadget.
Fixed SceneView for compilation with GCC 4.1.2.

Because TypedData specialisations must happen in the IECore namespace, we define PathMatcherData in IECore and then typedef it into GafferScene. GCC 4.1.2 then considers PathMatcherData to be an ambiguous name if we have "using namespace IECore" and "using namespace GafferScene". Other compilers realise that both refer to the same name anyway and just get on with things.
Fixed bug in Instancer dirty propagation.

This had gone unnoticed before because the viewer would always do a full update when any plug was dirtied. Now that updates are done partially based on the specific dirty plugs, it is much more critical that SceneNode::affects() implementations are accurate. We'll need to be on the lookout for similar bugs as we adopt the new SceneView.
Added TypedObjectPlug::getValue() argument for when hash is known.

This avoids an unnecessary computation of the hash in the case that client code has already computed it for its own purposes. An example use pattern is documented in the TypedObjectPlug header.

Binary incompatibilities :

- Added argument to ValuePlug::getObjectValue(), and associated derived class getValue() calls. Source compatibility is maintained.
Added TypedPlugClass helper to GafferBindings.

This allows us to share the work between GafferBindings::bindTypedPlug() and GafferImageBindings::bindFormatPlug(), and will simplify the creation of other TypedPlug specialisations in the future.
Added TypedPlug::getValue() argument for when hash is known.
Added NumericPlug::getValue() argument for when hash is known.
Optimised SceneGadget for static geometry.

When the hash for the object is the same as before, we can entirely skip the process of computing the object in Gaffer and then reconverting it to GL. This avoids a lot of cache churn in the presence of unchanging objects - for instance when switching between nodes with identical hierarchies and objects, or when playing back an animation with a large number of static objects. Processing of 25 frames of the bunny test scene for GL display is approximately 6 times faster with this change.
Fixed SceneGadget::object(s)At() when used with ID selection.

Until now I'd been testing on my laptop, which falls back to GL_SELECT mode - the ID shader mode requires the proper base state to be bound, as it contains the appropriate shader.
Optimised SceneGadget for static attributes.

This knocks 20% off the update time for the bunny animation cache with a couple of attributes nodes applied.

Fixes #1018.
Fixed SceneGadget GL resource management.

We can only destroy resources on the main thread when the GL context is current. This isn't elegant, and joins a host of other inelegant code in IECoreGL already. Ideally I think we need to introduce an IECoreGL::GLContext class, and have the IECoreGL resources belong to a specific context, which can be in charge of the deferred destruction.
Added comments to SceneGadget implementation.

Explaining what I think might be a good approach in the future.