Infrastructure for general point attributes

* Simple point field metadata system based on a type description and
  opaque data pointer.  This allows for arbitrary data to be passed into
  the shader, provided it can be loaded from file.

* Changes to connect point fields to shader attributes via the metadata
  system.  Ensure attributes with no corresponding field have a default
  set.

* Resurrect the use of GLEW for OpenGL features not covered by the Qt
  API

* Use uint16_t for colour data rather than float to save memory

* Utilities to get active input attributes for OpenGL shaders