Fixed state leaking from IECoreGL::ImmediateRendererImplementation.

This was leaking the viewport state, which interfered with the running of the test cases - some tests could fail if and only if they were run after the ImmediateRenderer test.
Fixed IECoreGL::PointsPrimitive selection.

Previously selection would fail when in Selector::IDRender mode, as demonstrated by the failure of Selection.testPointsPrimitiveSelect(). When in IDRender mode, the Selector installs a special ID shader in the state, and relies on using the override mode to ensure that the shader isn't replaced by others lower down in the hierarchy of the scene. However, the PointsPrimitive replaces the shader so that it can use its own vertex shader to perform the instancing necessary to render as disks and quads, causing the failure. Shader::Setup::ScopedBinding now registers all bound shaders with the current Selector wherever necessary, fixing the problem.
Fixed failing Shader test cases.

These test cases have been broken ever since I rewrote the Shader code for better performance and proper scoped binding/unbinding of parameter values. They were broken because I changed the API rather than because they indicated actual failures. I left them in as a reminder to consider whether or not we needed equivalent functionality to the old APIs they tested, but having gone a good 6 months with the new API I'm pretty happy that it's sufficient as is. So I've patched up the tests so they don't rely on the old APIs.
Default ParticleReader realType parameter to "float".

This means that all PointsPrimitives loaded with default settings are now compatible with our Renderer backends. This makes the Readers much easier to use in Gaffer, and makes it possible to preview particle caches without type specific code.

Fixes #69.
Added Shader::csParameter() method.

This provides constant time access to the "Cs" parameter, and is the first of several methods which in the future will return specific standard parameters which have meaning to IECoreGL. Such parameters will include standard ways of passing the matrix and projection matrix so that we can stop using deprecated shader globals like gl_ModelViewMatrix.
Fixed IECoreGL::PointsPrimitive colouring.

The PointsPrimitive vertex shader used for instancing didn't have a Cs uniform parameter. This meant that the code in Primitive::render() was generating GL errors attempting to set non-existent uniforms, and also that the fragment shader didn't receive a valid value for the fragmentCs input. The Primitive code had another vulnerability in that it assumed that the location of the Cs parameter was always 0, which was only luckily the case so far.
Promoting m_static to all SceneCacheNodes
making a unified sceneParmChangedCallback
Added objectOnly toggle to SOP_SceneCacheSource.

Using it to prevent diving into the hierarchy when we really just want to evaluate the current level,
and to determine correct animated/static state.
OBJ_SceneCacheNode is always animated (temporarily).

This is safer until we get some feedback from SESI and can track down the drawing update bug properly.
Correctly transforming GR_CortexPrimitive at render time
Merge pull request #72 from johnhaddon/shaderTestFailures

Fixed failing Shader test cases.
Merge pull request #73 from johnhaddon/particleReaderRealType

Defaulted ParticleReader realType parameter to "float".
Merge pull request #74 from johnhaddon/glPointsPrimitiveColors

Gl points primitive colors
Fixed OBJ time dependency issues.

Time dependency has a different meaning in OBJs as in SOPs. In OBJs, a node may be time dependant simply because its parent is, since that effects its world matrix. Since Houdini tries to encourage every OBJ to be static, the solution is to believe Houdini when we're told an OBJ is animated. We now only update time dependency of OBJs when Houdini thinks the node is static, but we know otherwise.
Fixed potential bug in IECoreGL::Selector::loadIDShader().

As documented in the deleted comment, it was possible for a shader to die and be replaced with another with the same GL ID. Now the Selector keeps a reference to the shader to prevent that happening.
Merge pull request #71 from johnhaddon/pointsPrimitiveSelection

Points primitive selection fix
Re-rooting caches with top level objects.

Users found it annoying to name a single piece of geo (or put it in a subnet) just so they can cache it. We now detect top level geo and automatically name it based on the OBJ node name.
FromHoudiniGroupConverter ignores internal groups.

This fixes a bug where the group converter would take preference just because of the selection state. I've verified the fix, but unfortunately I can't write a test case, because there doesn't appear to be any way to create internal groups from python...
Added copyright notices.
Fixed a few bugs that were causing crashes.
Added support for TCL expressions within the file path.