Remove sampler GLUniforms

These classes are not used by all glsl shaders and most sampler uniforms do not have their own class. Other sampler uniforms do not have their own class because they need to be able to manually specify the value for the uniform.
Refactor GLUniform code to reduce duplication