fix incorrect glBindBuffer argument
expand GraphicsContextResource to self-register itself with GraphicsDevice
update BufferObject to provide support for new GraphicsContextResource support
change BufferObject and GraphicsContextResource to use a simple "do-nothing" constructor, and do all important initialization in a separate method with a return value
update VERTEX_ATTRIBS, merging type and size enums into one
update VertexBuffer to use Initialize() methods to setup itself instead of the constructor. vertex attributes are now passed as an array instead of using "Add" methods
updated IndexBuffer to use Initialize() methods instead of doing it all in the constructor
add missing return
add Release() method to handle resource/mem freeing instead of doing it only in the destructor (the destructor in these classes just calls Release() now)
update all uses of VertexBuffer, IndexBuffer and VERTEX_ATTRIBS to compile and run under the new changes
add if-check for the graphics device object passed to GraphicsContextResource::Initialize() so it can fail gracefully instead of just relying on the assert
add checks to help prevent duplicate initialization of GraphicsContextResource
update Framebuffer with the GraphicsContextResource changes. also fixed a few small issues with how it handled new/lost contexts and restored itself
update Renderbuffer with GraphicsContextResource changes
minor swap of order of validation checks
add missing Release() call
don't attempt to restore managed resources in GraphicsDevice::OnNewContext() if it's the first run (e.g. when things are guaranteed to be loaded already)
shift Shader initialization from constructor to separate Initialize() methods, and update for GraphicsContextResource changes
update all shader subclasses to use Initialize() methods for all complex initialization instead of the constructor
update GraphicsDevice's built-in shader properties. now initializes them only on first-access (lazy-load)