Created OpenGL shader factory

The GLShaderFactory interface is how all shaders should be created.  If
the desired behavior is not provided for the factory, then a new one
can be created by the programmer and substituted.