Adds support for Android.

This has been tested with both OpenGL and OpenGL ES on Android.
We can't use dlsym on Android to get all the function pointers since Android's libGLES* libraries are just shim libraries that pass everything through
to the real vendor specific libraries.

Due to this we must grab function pointers entirely through eglGetProcAddress instead of dlsym.