Read and display "hullxy" ply elements as edges
Support for ply "triangle" element for tri meshes

* Fix ply type detection, which was broken in the previous commit due to
  an errant strcmp() test.

* Add support for reading triangle meshes with face elements given by

  element triangle
  property v1
  property v2
  property v3

* Support for reading colors from the vertex element as well as a
  separate color element.

* Extra logging of ply read anomolies

* Add test case/example for ply file with triangle mesh
Logger support for early exit and debug logging

* Debug logging level

* Early exit before formatting log messages, so that debug messages
  don't cost much

* Setting to make progress logging optional
Exception type with convenient message formatting
endswith() string utility function
Make TransformState use double precision

This allows large offsets to the data origin to be represented
accurately and conveniently on the CPU side.
Utility for drawing semitransparent spheres

This will be useful for representing a "brush" to select points with
Simple shader for semitransparent selection sphere
Decouple 3D cursor from camera centre movement

To allow the 3D cursor to be more useful (for object selection, etc),
decouple it from movements of the camera.

* middle click moves the camera centre
* control + middle click moves the cursor
Add height above ground greyscale render mode
Use jet colormap in shader for height above ground
Some additions to standard las shader

* Mode to show only points which have been classified
* Mode to colour classified points green
External C++11 bindings for displaz

This is a first go at external C++ bindings for displaz, to enable other
projects to write point clouds to displaz with ease.  There's a few
things which need cleaning up, for example, the ability to specify
vector semantics and to have unscaled integer attributes, but it should
be useful as it stands.
Merge branch 'master' into lod
Bottom up octree build, WIP

* Build octree in bottom up fashion by traversing point database
  in Morton order.

* Shader for help in debugging octree hierarchy

Broken:

* dvox hcloud writing broken due to being used as a test entry point

* Various code cleanup and commenting required
Ordered dithering for partial coverage

Using dithering for partial coverage is more visually pleasing than
simply scaling down the size of the point, so do that in the fragment
shader.  The implementation is quick and dirty, so probably quite
inefficient...
Bottom up octree build serialization and indexing WIP

Work in progress - currently not working.

* NodeOutputQueue for reordering octree brick serialization order while
  achiving bounded memory footprint during the build.

* IndexNode to store octree connectivity, which will later be later
  dumped to disk (TODO)

* Fix some comments