Implemented VertexBuffer "views" and allow arrays with dtype fields.
Renamed the baseBuffer to "Buffer", which is type/shape agnostic.
The VertexBuffer and ElementBuffer wrap such a buffer (instead of
subclassing it).
Docs
Draw_arrays and draw_elements are methods of ShaderProgram.
Because the shader program knows about any VBO's. draw_elements
accepts a numpy array or an ElementBuffer object.