Support for custom GLSL shaders

I've added the ability to attach custom GLSL shaders and set basic uniform values (float, int, vec2/3/4). This required me to move the base GL shaders and the GPUProg class. I also created a sample project to test attaching and detaching shaders by setting it to null.

Eventually it would be nice to handle attributes, uniform matrices, and textures but I felt like this pull request was large enough as it is.