Shaders added

Now shaders can be used. To use them, you have to make the shader
objects, load in the source files for each one of them, and then attach
them to a program object, which you then link and use. Actual vertex and
fragment shaders have not been implemented.
Per-pixel diffuse lighting works (sort of)

Lighting now works (the light is attached to the camera; move around the
map to light different parts of it), but the lighting techniques used
are not standard, so they'll be changed in future commits. Also, the
fragment and vertex shaders need to be changed further in order to
re-enable texturing (woops!)