This fixes the bug where an operation such as glClear would
incorrectly accrue all subsequent time until the next call to
glUseProgram would change the op away from glClear.
Now, each non-shader operation that changes the metrics operation
restores it to its previous value immediately afterward.