Make ShaderProgram return values to const where appropriate
Clear cached shader locations after recompiling
If recompiling currently bound ShaderProgram, unbind it