Splitting out my changes to VertexBufferObject to create a parallel VertexData implementation, VertexBufferObjectWithVAO. This reduces the branching and keeps the VBO code pretty simple. Modify Mesh to create the new implementation when appropriate.
reverting FrameBuffer changes, these are experimental and separate.
restoring framebuffer