1073036
This introduces some infrastructure to start tracking the program state more carefully. Currently it only tracks the program because UseProgram was showing up the most in profiles, but more state could also be added as needed.
The only user is in layers/opengl. This is needed to do better state tracking in the compositor.