cortex auto instancing patch

added recursive mutex header to IECoreRI::RendererImplementation header

added hash method to a procedural in a test, to stop it complaining
Fixed auto instancing test failures

auto instancing tests on curves and patch meshes were failing, because emitPrimitiveAttributes wasn't being called, meaning the correct basis wasn't being set
fixed crash with auto instancing and transform motion blocks

added unit test for transform motion blur with autoinstancing
IECoreRI renderer now constructs mesh primitives without checking topology

Previously, when rendering scenes with large amounts of instanced meshes, an inordinate amound of time was being spent in MeshPrimitive::setTopology(). RendererImplementation::mesh() now uses MeshPrimitive::setTopologyUnchecked() to avoid that.
Sharing object instance handles across an entire render

Previously, if a render was launched from a rib containing multiple iePython procedural calls, automatic object instances were not shared across those procedurals. This change attempts to address that (in a less confusing way to the previous attempt)

removed stupid 'horror!' comment and replaced it with an error message

added test cases for shared object handles across procedurals in a rib

added test case for shared object handles across nested procedurals in a rib

changed instance scope to global, so it gets shared across world blocks