Use 'glGetStringi" to get extensions on OpenGL 3.3+

This fixes getting extensions on, e.g., llvmpipe on Linux with 3.3 Core Profile -- otherwise one gets a segfault. This should be done with dynamic detection of version, because on older OpenGL's we can't be sure that `glGetStringi` exists.