Fixed transform matrix order in Group.globalTransformMatrix()
Fixed maya procedural selection highlighting

For hierarchical procedurals, an object could get incorrectly unhighlighted if its parent had been highlighted, in certain situations. Just added a check to fix that
added a new setTopologyUnchecked method to MeshPrimitive, plus lazy computation of min/maxVerticesPerFace
removed 'virtual' from NURBSPrimitive::setTopology while I'm at it
IECoreGL renderer now uses new MeshPrimitive::setTopologyUnchecked() method to save a bit of work
Added noIntermediate parameter to be able to ignore the intermediate flag when looking up sceneShapes for tags.
SceneShape::findScene noIntermediate flag not default, parsing all children instead of shapes directly below so it doesn't skip intermediate nodes.
moved some checks into computeMinMaxVertsPerFace(), which now gets called by setTopology()
Added support for expressions to IECoreNuke::LensDistort.
Dynamic knobs are now serialised and restored to and from a script which preserves any expressions which they might have been assigned.
Fixed bug when caching hidden OBJs.

Hidded OBJs return null geometry unless we force otherwise.
SceneCache ROP is interruptable.

This is used to cancel long running local caches.
Using GA_AIFSharedStringTuple instead of GU_Detail::getUniqueStringValue

This was a recommendation by SideFx for speed improvements. It doesn't seem to have helped much in this case, but it didn't hurt, so might as well keep it.
Manually iterating the prims and checking for string matches.

Extracting a large asset (500k polys, 1800 named shapes) took 8 minutes. Profiling showed that GU_Detail copying and GU_Detail::getRangeByValue() took the largest amount of time. By looping over the prims ourself, we avoid both of those calls, and the extraction time drops to 1.5 minutes.
Adding the DetailSplitter.

Its a convenience class for extracting select bits of geometry from a GU_Detail. It is intended to improve performance when making multiple calls to split the same detail. The default use is splitting based on the name attribute, but any primitive string attribute could be used.
Using DetailSplitter in FromHoudiniGroupConverter.

The DetailSplitter simplifies conversion by name.
Using DetailSplitter in HoudiniScene.

HoudiniScene instances that refer to a SOP create a DetailSplitter during construction. Child scenes inherit the splitter of their parent, so only one splitter per SOP is ever created. Using the splitter during readObject reduces the cache time for the large asset (500k polys, 1800 named shapes) from 1.5 minutes to 35 seconds.
Simplifiyng retrieveNode().

Most use cases verify the SOP data themselves if necessary. Removed m_contentPath since it can be easily retrieved when needed. I wasn't able to remove m_nodePath because of complications resolving children via connection. It is not impacting performance, so I'm leaving it for the time being.
Replacing relativePath() with char* search functions.

This removes all calls to SceneInterface::stringToPath, which was the current bottleneck in the profile. Cache time for the large asset reduces from 35 seconds to 3.3 seconds with this and the previous commit.
Patch for loading multiple ieCoreHoudini plugins.

Houdini loads all plugins on the path, regardless of whether they have been seen before. This means that when installing things in a studio setup, several versions of the plugin may be loaded, for example a user install for testing and the central install. This commit prevents such situations from seg faulting, and instead prints a warning to stderr. Currently the only conflict will be the definition of GU_CortexPrimitive. Since the correct library will still be loaded, I think the warning can be ignored in most situations.
Merge pull request #106 from davidsminor/meshPrimitiveUncheckedTopology

Mesh primitive unchecked topology