cortex auto instancing patch
added hash method to a procedural in a test, to stop it complaining
added recursive mutex header to IECoreRI::RendererImplementation header
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
SharedData/auto instance object handles should now be shared inside RiBegin()/RiEnd() blocks
IECoreRI renderer now constructs mesh primitives without checking topology