Merge pull request #106 from davidsminor/meshPrimitiveUncheckedTopology

Mesh primitive unchecked topology
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
elements in the context->RiBegin context map now get removed when the renderer dies.