Add GL_EXT_EGL_sync extension

This commit adds the GL_EXT_EGL_sync OpenGL extension to extend
EGL_KHR_fence_sync with OpenGL client API support.

While arguably OpenGL already has GL_ARB_sync, there are platform
extensions that are layered on top EGL_KHR_fence_sync rather than
GL_ARB_sync. Without OpenGL support of EGL_KHR_fence_sync, these
extension can't be used with an OpenGL command stream. One notable
example is the EGL_ANDROID_native_fence_sync extension, which enables
`linux_sync_file` objects to be used as the backend of EGL sync objects.
Linux sync file objects can be used to synchronize buffer access between
processes dispatching OpenGL drawing commands, or to synchronize with
the Linux KMS display subsystem (aka 'explicit fencing').
12 files changed