Reworked the gl_functions class to use a macro to generate function loaders.
gl_function objects are now passed around as const.