Fixed IECoreGL::PointsPrimitive selection crash.

This problem was originally discovered and diagnosed by Hradec - thanks are due to him for doing much of the hard work in getting this fixed.

When in IDRender mode, the Selector would make a ShaderStateComponent directly from a ShaderSetup, resulting in a ShaderStateComponent without a shader or texture loader. This then caused crashes in PointsPrimitive::shaderSetup when it attempted to use the nonexistent shader loader. The Selector now makes a complete ShaderStateComponent, and the ShaderStateComponent( ShaderSetup * ) constructor has been removed to avoid similar mistakes in the future.

Note that this merely prevents the crash, but the new test case actually fails still because the shader the PointsPrimitive loads isn't known to the Selector. The failure will be addressed in forthcoming commits.
Robustified IECoreGL::Selector using RAII.

Rather than having begin() and end() calls which were prone to problems where an exception during selection would prevent proper cleanup, we now start selection in the constructor and end selection in the destructor.