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
changed instance scope to global, so it gets shared across world blocks
IECoreRI renderer now constructs mesh primitives without checking topology
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)
added unit test for transform motion blur with autoinstancing
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