Added Geometry filters, refactored MeshGeometry creation

Filters are chainable transformations of MeshGeometries, such as inverting the face windings or applying a transform. Some additional work could be done to make them more efficient at runtime (pre-allocate and/or skip work based on the required/generated attrib lists) but that's an optimization for another day.

MeshGeometry creation gets locked down quite a bit in this PR. Now a MG is assumed to always have a fixed set of Attribs and fixed number of vertices for it's lifetime, which is more clear cut than the previous methodology. A whole mess of new constructors have been added to help manage transforming MeshGeometries as needed. This makes for some additional overhead and requires a little more planning on the part of the generators, etc. I feel like the tradeoff for a cleaner APi is worth it, though.

Also addresses Issue #44.

Happy to hear comments/critiques/random incoherent babbling/etc.