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.
Bug fix on instances showing superimposed with the original GL group.

Making sure the GLGroups pointed by the instance map contain the transform matrix.
Merge branch 'master' of https://github.com/ImageEngine/cortex
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 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
resolved conflicts
Merge remote-tracking branch 'upstream/master'

Conflicts:
	src/IECoreGL/PointsPrimitive.cpp
	test/IECoreGL/PointsPrimitive.py