Optimised PathMatcher.

Added new methods for adding and removing paths as vector<InternedString> - this avoids all the overhead of tokenization for cases where the path already exists in tokenized form.

Changed internal representation to use InternedString rather than std::string. This is much more compact than the old representation, since most strings we put into a PathMatcher will already have an InternedString representation somewhere (from the SceneNodes or from IndexedIO).

PathMatcherTest.testLookupScaling() shows a 67% reduction in time to build the PathMatcher, a 78% reduction in time to perform the lookups, and a 70% reduction in memory usage.
Interleaved hash/compute methods in SceneReader.cpp.

It's much easier to verify that the implementations correspond appropriately when they're adjacent in the source code. We should do things this way as a matter of course in all the code.
wip