New way to query supported OpenGL extensions

When asking for a specific version of OpenGL, NVidia's driver (it's the only one I can test) stops supporting `GL_ARB_compatibility`, which is required to use `glGetString(GL_EXTENSIONS)`.

This patch uses `glGetStringi` to fetch individual extensions in an input range. It works with all context versions starting with 3.1 and probably older versions but I can't test them. (driver doesn't want to give me older contexts)