one-time-init cleanups
Here's a bunch of cleanups to the one-time-init code in mesa. The principal change is that we remove the dependency of struct gl_context
entirely from the initialization code. This effectively fixes the extension-overriding for applications that create more than one mutex. This was previously split into both global and context-local variables, causing inconsistencies.
This was factored out of !4734 (merged), because it's fairly independent code, and hopefully easier to review this way.