Added Uniforms Without Binding

It either uses glProgramUniform, or sets the previously-bound program
object back after setting the uniform.