Redundant glUseProgram optimization

After #2697, everything uses shaders for rendering and it's not necessary for materials to call Program::Unuse to clean up. This also makes it possible to avoid binding the same program repeatedly.

And it does actually make a small difference, I go from 5.1 - 5.3ms/frame to 3.4 - 3.6ms/frame in a completely unscientific test.