TestMainVersionGLWindowNEWT: Add 'manual' version get/print for verification.
Add Support for GL 4.3 (Bug 716) and ES 3.0 (Bug 717)

ES3 / GL4.3:

- Update all EGL, GLX, WGL and GL (desktop and mobile) khronos headers to latest version.
  - GL3/gl3* -> GL/glcorearb*

  - Explicitly preserve ES2_compatibility and ES3_compatibility in header,
    most extension grouping was removed in new headers.

  - Always load all GLHeader to ensure proper extension association across all profiles.

  - Unified method signatures

  - Added GL_EXT_map_buffer_range to core

  - Using common 'glMapBufferImpl(..)' for all glMapBuffer(..) and glMapBufferRange(..) impl.

  - Init necessary fields of GL instances via 'finalizeInit()' called by reflection, if exist.
    This allows removing initialization checks, i.e. for all buffer validations.

- BuildStaticGLInfo: Can handle new GL header structure, i.e. one CPP extenstion block incl. define + funcs.

- GLJavaMethodBindingEmitter: Simply print the

- No GL duplication due to new intermediate interfaces, see below

- OO lineare inheritance (Added GL2ES3, GL3ES3 and GL4ES3 intemediates):
  GLBase - GL - GL2ES2 - GLES2
  GLBase - GL - GL2ES2 - GL2GL3 - [ GL2, GL3 ]
  GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - [ GL3 ]
  GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - GL4ES3 - [ GLES3, GL4, .. ]

- Expose 'usable' intermediate interfaces GL3ES3 and GL4ES3 in GLBase/GLProfile/GLContext
  via is*() and get*().

- GLContext*:
  - isGL3core() is true if [ GL4, GL3, GLES3 ] (added GLES3)

  - Added ctxProfile argument to allow handling ES versions:
    - getMaxMajor(..), getMaxMinor(..), isValidGLVersion(..) and decrementGLVersion(..)
    - mapGLVersions(..) prepared for ES ARB/KHR validation

  - EGLContext checks ES3 (via old ctx's GL_VERSION)

- ExtensionAvailabilityCache adds GL_ES_Version_X_Y for ES.

- Prelim tests w/ Mesa 9.1.3
  GL Version     3.0 (ES profile, ES2 compat, ES3 compat, FBO, hardware) - OpenGL ES 3.0 Mesa 9.1.3 [GL 3.0.0, vendor 9.1.3 (Mesa 9.1.3)]

- TODO:
  - Use KHR_create_context in EGLContext.createContextARBImpl(..)
  - More tests (Mobile, ..)

+++

Misc:

- GLContext*:
  - Complete glAllocateMemoryNV w/ glFreeMemoryNV.
StringBuffer -> StringBuilder
Fix regressions of commit 3a0d7703da32e9a5ddf08a334f18588a78038d88: Avoid CPP redefinitions
Fix BuildComposablePipeline's isGL*/getGL* ; GLBase: getDownstreamGL()/getRootGL(); GLContext.isGL* added proper API doc., isGL3core()/hasNoDefaultVAO() and getDefaultVAO().

- Fix BuildComposablePipeline's isGL*/getGL* (regression of commit 3a0d7703da32e9a5ddf08a334f18588a78038d880)

- GLBase: getDownstreamGL()/getRootGL()
  Allows user traversing through pipelined GL instances.
  Also added getRootGL() to GLContext.

- GLContext.isGL* added proper API doc.: We test the actual context, not the profile.

- GLContext isGL3core()/hasNoDefaultVAO() and getDefaultVAO()
  - Move isGL3code() def. back to pre 3a0d7703da32e9a5ddf08a334f18588a78038d880, i.e. Includes [ GL4, GL3 ] w/o GLES3.
  - Added hasNoDefaultVAO() and getDefaultVAO() .. incl. [ GL4, GL3, GLES3 ]
Fix value range of CTX_* options bits, regression of commit 3a0d7703da32e9a5ddf08a334f18588a78038d88
WWW: Add JaamSim; Use local VolumeViewer png
WWW: Resize insparia png
Fix PointsDemoES1: No zero point size allowed
Only use base pipelines for Trace/Debug, mock others (ES2, GL2, ..); BuildComposablePipeline: Unify GL identify methods

- Only use base pipelines for Trace/Debug, mock others (ES2, GL2, ..)
  The Trace/Debug generated pipelines consume quite some space
  and only the actual GL*Impl pipeline is actually required.

  To make this work, we have to identify the GL type via it's downstream instance
  to implement isGL*() and getGL*() methods, see below!

  Adding dummy Trace/Debug type wrapper for GL2, GL3, GL3bc, GL4 and GLES2.

BuildComposablePipeline: Unify GL identify methods
  As described above, Trace/Debug shall utilize downstream identification for isGL*() and getGL*() methods.

  Custom types, like FixedFuncImpl may choose to be identified by their class inheritance,
  by passing command-line argument 'gl_identity_by_assignable_class'.
GL*: Expose isGL*Core(); GLContext: isGL*() API doc cleanup - align queries.
GLProfile: Abstract profile to impl. mapping, i.e. GL2ES2 -> GL3, favors core profile now - no more OSX exception!
Texture: Skip glEnable/glDisable TEXTURE target if using a core context!
FFMPEGMediaPlayer: Use GL_RED instead of deprecated GL_ALPHA, otherwise won't work w/ core >= GL3 profiles
GPUUISceneGLListener0A: Rotate on vertical scroll ..
Tests: Cleanup for GL core usage (Skip texture enable/disable, proper GLSL version number, use VBO only, ...)
Tests: Cleanup for GL core usage p2 - (Proper GLSL version number)
Fix FFMPEGMediaPlayer: Only use RED for GL3ES3 profiles, otherwise stick w/ ALPHA (regression of e92e561df9673ce77783d6fa3815a942a39a53c0)

GLES2 does not and GL2 may not support RED!
FFMPEGMediaPlayer: Only instance ALAudioSink if JOAL is found on the classpath.

Signed-off-by: Xerxes Rånby <xerxes@zafena.se>
ALAudioSink: Reduce exessive CPU usage caused by polling alGetSourcei.

Signed-off-by: Xerxes Rånby <xerxes@zafena.se>