Support for arbitrary vector and array attributes

* Add PointFieldType::Semantics so we can tell the difference between a
  vector and an array for passing to glsl.

* Add heuristics to turn ply file field names into vectors or arrays

* Bug: Arrays don't yet work right in the case that not all
  elements are active.