Compatibility with version 2.9 of OpenGL.

The biggest user-facing changes are to the loading of
ShaderPrograms. Due to changes to the underlying OpenGL library, we can
now better support the variety of shader types offered by OpenGL. We
still maintain a simple path with just a single vertex shader and a
single fragment shader, but the names of related loading functions have
been changed to better present available functionality.