Fix GLContext.Version* regression: Use Version1_1 and Version1_2 for 1.1 and 1.2 (Version110 and Version120 are for 1.10 and 1.20 GLSL)

Following commit introduced the wrong version usage, where a comparison w/ 1.1 and 1.2 was intended.

Commit 6363fccee219ce238b0b2ded39c116e2bc8613d5
  GLBuffers.sizeof(..): Add support for ES3, reading supported glPixelStorei states

Commit 73a4d809f92126228b64a3bded75686db806be64
  Don't utilize glPixelStorei's PACK/UNPACK IMAGE_HEIGHT and SKIP_IMAGES for Desktop GL < 1.2, avoiding GL-Error

Commit f358c49418e95c622d50eb29f53c60dc4dbdee5b
  Bug 1047 - jogamp.opengl.glu.mipmap.Mipmap now uses already parsed GL version number and GL profile selection
FloatUtil.makeFrustum(..): Add throws GLException API doc / Add GLException if zNear == zFar

throws GLException with GL_INVALID_VALUE if zNear is <= 0, or zFar < 0,
or if left == right, or bottom == top, or zNear == zFar

Add note on callers:
  - FloatUtil.makePerspective(..)
  - Matrix4.*
  - PMVMatrix.*
  - ProjectFloat.*
GLContext.Version* VersionNumber Constants: Clarify names, avoiding mis-interpretation alike Version130 -> [ 1.3.0 | 1.30.0 ] ?
Use ExceptionUtils.dumpStack(..) instead of Thread.dumpStack()
Minor Cleanup (FBObject, GLBase)

FBObject: Remove redudant case

GLBase: Add API doc reference to GLContext implementation
Bug 1106: JPEGDecoder adopt to GlueGen Bitstream change commit 9e13e8c78ed69bb7afcd49abe8bf69340dc06223
Bug 1107 - Refine PixelFormat, GLPixelBuffer and DirectDataBufferInt/BufferedImageInt

- PixelFormat
  Refine definition allowing complete format conversion by its attributes
  instead of static 'knowledge'.

  - PixelFormat has_a *new* PixelFormat.Composition

  - PixelFormat.Composition contains all pixel component layout
    information as required for inspection and conversion.
    Component names are enumerated via PixelFormat.CType.

  - PixelFormatUtil.convert(..) utilizes generic conversion
    based on PixelFormat.Composition rather static type mapping.
    However, a int32 RGBA static conversion is still supported for performance.
    Utilizes Bitstream for varying pixel component bit-width.

  - Complete w/ hashCode() and equals(..)

- GLPixelBuffer
  - Take 'pack' mode into account when determine GLPixelAttributes,
    i.e. on GLES pack=true (e.g. glReadPixel) only RGBA is guaranteed to work.
    Hence querying GLPixelAttributes requires the GLProfile, PixelFormat and pack mode.

  - Complete GLPixelAttributes conversions from PixelFormat or GL format/data-type,
    while taking GL data-type into account, as well as pack-mode.

  - Complete w/ hashCode() and equals(..)

  - SingletonGLPixelBufferProvider queries singleton GLPixelBuffer via
      - PixelFormat.Composition hostPixelComp,
      - GLPixelAttributes pixelAttributes,
      - boolean pack
    which comprise a unique key, allowing the implementation to utilize
    a hash map. This is implemented in AWTSingletonGLPixelBufferProvider.
    This allows distinct singleton GLPixelBuffer for different
    host PixelFormat (conversion) and GLPixelAttributes (depending on GLProfile).

  - Removes field 'componentCount' which was 'hacked in' to pass
    information about an optional host memory layout.
    Implementations utilizing conversion, e.g. AWTGLPixelBuffer,
    can implement GLPixelBufferProvider's
      'PixelFormat.Composition getHostPixelComp(final GLProfile glp, final int componentCount)'
    and manage such implementation details, see use-case GLJPanel.

- DirectDataBufferInt/BufferedImageInt: Expose underlying NIO ByteBuffer

- AWTMisc.createCursor(..) uses DirectDataBufferInt.BufferedImageInt exposed
  NIO ByteBuffer, allowing to use generic PixelFormatUtil.convert(..).
Bug 1068, 1096: Unify EGL surface related code in EGLSurface; Add notion of 'Surfaceless Upstream Surface'

Preparation for Bug 1068: GLContext creation and makeCurrent without default framebuffer

- Unify EGL surface related code in EGLSurface
  - EGLWrappedSurface -> EGLSurface,
    which utilizes a more straight forward
    foreign upstream surface (X11, GDI, ..) to EGL mapping.
  This also addresses Bug 1096, i.e. EGL Cleanup.

- Add notion of 'Surfaceless Upstream Surface'
  - Add surfaceless 'fake' upstream surface hooks:
    - EGLUpstreamSurfacelessHook
    - X11UpstreamSurfacelessHook
    Utilizing the ProxySurface option bit 'OPT_UPSTREAM_SURFACELESS'
    signaling usage of 'no surface'.

  - Add GLDrawableFactoryImpl.createSurfacelessImpl(..)
Bug 1068 - Allow GLContext creation and makeCurrent without default framebuffer (Part 2); Bug 896: EGL_KHR_create_context (Part 1)

Bug 1068 - Allow GLContext creation and makeCurrent without default framebuffer (Part 2)

Implement surfaceless context on EGL and GLX/X11
utilizing *UpstreamSurfacelessHook as introduced in
commit 9ea218a5990b908e04235c407c0951c60df6ffba.

Surfaceless context is probed during GL profile probing by default.
If available, it will be used for offscreen FBO drawables.
If probing fails, or is disabled,
the new GLRendererQuirks.NoSurfacelessCtx is set.

- GLProfile.disableSurfacelessContext disables
  surfaceless context probing, set property 'jogl.disable.surfacelesscontext'

Tested:
  - Mesa/EGL works,
  - Mesa + NVidia w/ GLX fail on GNU/Linux): Fails NoSurfacelessCtx

- TODO: Windows impl. and more tests

+++

Bug 896: EGL_KHR_create_context (Part 1)

- Detect EGL_KHR_create_context capability and utilize if available.

- Implement EGLContext.createContextARBImpl(..),
  allowing native DEBUG context usage, where available.

- EGL implements SharedResourceRunner, i.e. probing profiles
  on dedicated thread using common interface.

- Probe desktop profile/context ability
  in EGLDrawableFactory SharedResourceRunner,
  Where EGLGLnDynamicLibraryBundleInfo covers EGL + desktop GL.

- TODO: Tests w/ capable implementation
Misc Fixes: Bug 1102 GLJPanel.setSurfaceScale(..); SurfaceSize.hashCode()

- Bug 1102: GLJPanel.setSurfaceScale(..)
  Allow setting non-initialized GLJPanel surface scale.
  TODO: More tests and probing before initialization.

- SurfaceSize.hashCode()
  Resolution's hash code is already multiplied.
Bug 1107: Add missing unit test