Sanitize query object OpenGL version checking.
Make a version check in VAO creation.
Make framebuffers check OpenGL and extensions.

It should be possible to use the screen framebuffer even without any
framebuffer extensions.
Allow buffer objects to be used with older OpenGL.

The tricky thing implemented in this commit is mapping ranges without either
OpenGL 3.0 or GL_ARB_map_buffer_range. I used trickery.