Add short term goals to ROADMAP.
Rework Buffer classes.

Buffer is now VertexBuffer.
VertexBuffer is a basic OpenGL buffer wrapper.
Buffer with dtype support is now DtypeVertexBuffer.
DtypeVertexBuffer only supports 1 dtype. I had never
used multiple dtypes in a single buffer so the convenience
was just added complexity.
Update examples to latest buffer code.
Remove commented out imports
Merge a number of changes from Luke Campagnola.

These are from commit 98b0596.
Only changes to shader.py have been implemented.
Not all changes have been implemented.
Further changes from this commit will be implemented in
future commits.
Minor fixes to shader.

Add missing super() call in ShaderProgram __init__.
Update create_from_existing to support compile_now with
the default being True.
Fix indentation of raise_invalid_variables in ShaderProgram
__init__.
Change example to not store shader source in a dict,
it's just cleaner to not use one.
Use VertexShader and FragmentShader.

Instead of Shader( GL_VERTEX_SHADER ... ) and
Shader( GL_FRAGMENT_SHADER ... )
Fix comments regarding attribute and uniform access.
Add optional dependencies to requirements-dev.txt
Clean-up VertexArray.

Remove un-used constructor parameters.
Remove is_bound, OpenGL provides no way to determine
the currently bound vertex array object.
Update example code.
Update comment syntax.
Update dtype_vertex_buffer.

Re-add name to offset method. We still need
offsets for individual dtype properties
Add / update comments.
Update comment syntax.
Updates to vertex_buffer.

Swap offset calculation to be simpler and use positive
checks instead of negatives ('if x' instead of 'if not x').
Add checks for the buffer being bound.
Fix check for data not checking against 'None' and causing
numpy errors.
Fix typo in nbyte allocation causing nbytes to become the
'byte' python type.
Fix set_data not honoring the offset value.
Updates to Shader. Includes changes by Luke Campagnola.

Fix examples in comments.
Move re import into the function that uses it.
Update comments.
Generate the enum to string dictionary dynamically
to handle different OpenGL versions.
Merge OpenGL enumeration code from Luke Campagnola
that enables usage on older OpenGL versions.
This dynamically creates the GL enumeration look up
dictionaries, including the 'enum_to_string' and the
Uniform type dictionaries.
Make some helper functions private (_ prefix).
This includes _register_uniforms and the new
_generate_enum_map functions.
Handle attribute type queries for invalid attributes.
Now returns None.
On program link, update the list of attributes.
Store attributes that aren't discovered through OpenGL
instead of creating and discarding them.
Fix print having missing format string Uniform._set_data.
Update examples to latest code.

Previously, core examples rendered using
shader.attributes.xyz = w
We now need to use shader.attributes['xyz'] = w.
This was going un-noticed as python was setting these
as new member variables on the attributes object.
Remove buffer.py

This was renamed vertex_buffer.py a while ago and
was missed from the commit.
Improve dtype_element_count.

Use dtype.shape to improve accuracy, when
shape fails, fall back to previous count method.
This enables us to handle sub-dtypes.
Update comments.