Reordered the buffer targets by OpenGL version

The OpenGL buffer targets where previously ordered by how they are
listed in the documentation.  The have been reordered by OpenGL version
but also keeping the same general order from the documentation.
Introduced the OpenGL buffer interface

Created the GLBuffer interface, a representation of an OpenGL buffer.
This interface provides simple methods to bind and unbind and some
getter methods for bind target and usage pattern.