Performance tests for chipper with & without cache

autzen-thin.las is probably too small to make a really good test, but
it's available in the source.
Avoid unnecessarily formatting in getDimension

For preformance, only format error messages if we're about to use them
in throwing an exception.
WIP optimizations to getDimension()

* Move name-based getDimension() implementation to getDimensionPtr,
  which returns a pointer rather than throwing exceptions, and also
  takes const char* strings to avoid additional allocation.

* Move las point dimension caching to use getDimensionPtr for efficiency

* Make do with a single lookups of multi_index container by name, by
  using equal_range early on.

* Fix potential bug in dimension inheritance by ensuring that we only
  iterate over the discovered equal_range, rather than potentially
  continuing to the end of the container.

TODO:

* UUID string parsing is BROKEN here - need a replacement for
  boost::uuids::string_generator which doesn't routinely throw.

* The API changes aren't well thought through here - getDimensionPtr()
  should probably replace getDimensionOptional()

* It's nasty having all those getDimension() variants - reduce them in
  number using boost::string_ref ?
Merge remote-tracking branch 'upstream/master' into getDimension_optimization
getDimension perf tests + use string_ref for dimension names

* Convert C-style implementation of getDimensionPtr() to use
  boost::string_ref for clarity.

* Add performance test cases to exercise various usages of
  Schema::getDimension*().  These underscore the importance of avoiding
  exceptions here, which are roughly 100x as expensive as a dimension
  lookup.

* Included with performance tests is a helpful header from OpenImageIO
  for convenient high resoultion timing.
Fix bug which crept in when refactoring getDimension()
Optimization: remove getDimension("<uuid-string>")

This rarely used functionality forced each incoming name for
getDimension to be parsed as a UUID, only to determine (in the vast
majority of cases) that the string was not a valid UUID.
Use string_ref in getDimensionOptional() for consistency

Also use default string_ref constructor in empty namespace version of
string_ref to avoid a needless call to the const char* constructor.
Minor naming cleanups for clarity and consistency
Merge branch 'c42f-getDimension_optimization'