Shader abstraction added called ShaderPipeline.

* Responsible for abstracting gl functions for shaders into an object.
* This is half thought idea. I want to research shaders and their compilation/usage some more before I commit to this idea.