Added wrapper classes for shaders/shader programs to ease the process of
compiling, linking, assigning uniforms, etc.  They're modeled after the ones
included in QtOpenGL, which we can't use at the moment because they require
a Qt OpenGL context.