Bug 928 - JAWTWindow's JAWTComponentListener _not_ attached and original visibility state not restored @ detach

Commit ebed9f0322e2a2279a525e04ee3875c9034a7f45 (fix for Bug 906) causes a regression
to fix for Bug 816, Bug 849 and Bug 889 (OSX CALayer Positioning and JAWTWindow visibility).

The commit adds the JAWTComponentListener instance 'jawtComponentListener'
to the component before it's assignment (duh!).

+++

Further more, detaching the JAWTComponentListener shall restore
the component's original 'local visibility state', which might got overridden
by it's 'hierarchyChanged' implementation.

+++
Merge remote-tracking branch 'xranby/master'
FFMPEGMediaPlayer: Add missing indentation of commit 8a032a2c1f247819bdb08382fbebcc4cd896b3f2
NEWT X11Window.c: Cleanup Code - No changes.
Bug 924: Fix 'Unity WM' issue w/ sticky _NET_WM_STATE after Fullscreen On/Off Cycle

Unity WM keeps the _NET_WM_STATE (_NET_WM_STATE_FULLSCREEN, ..) after fullscreen-exit
even though _NET_WM_STATE_REMOVE was issued.

Add remedy: Reparent Child -> TOP: Reset _NET_WM_STATE (! _NET_WM_STATE_FULLSCREEN, ..).
Bug 924: Ignore reparent when in fullscreen - otherwise may confuse WM
Bug 924: X11 WindowDriver: Only perform 'tempFSAlwaysOnTop' toggle @ focusChanged(..) if isFullscreen()

.. otherwise it will be triggered by reconfigure tasks while enabling/disabling fullscreen.
Bug 924: Remove position criteria from reparent/fullscreen success, WM's only regard custom position as a hint (X11).
NEWT WindowImpl: Enhance insetsChanged(..) DEBUG output
Bug 924: More robost Fullscreen Exit

- 'tempInvisible' shall be also performed for top windows, solves Unity-WM background refresh issue

- Rename local field 'fullscreen' -> '_fullscreen' to avoid confusion

- Proper insets handling: Set 'WindowImpl.this.fullscreen = _fullscreen' only before reconfiguring,
  otherwise wrong position maybe used due to wrong insets value.

Tested w/ WMs: KWin + Unity
Bug 924: Fix X11 Fullscreen ALT-TAB Regression ; Make ALWAYS_ON_TOP Persistent when Reparenting (child -> top)

- X11 Fullscreen ALT-TAB regression (no task-switcher visible)
  We still need the fast reconfigure path for ALWAYSONTOP only toggle.
  It was removed w/ commit c9fcc8cd510abc0cbebb872dc3e457327655e778,
  which disabled toggling FULLSCREEN and ALWAYSONTOP.

  Note: Another bug in Unity WM's Compiz:
    'Unredirect Fullscreen Windows := True' disables
    the ALT-TAB taskbar/launcher HUD rendering and subsequent task-switch.
    Hence it shall be disabled .. nothing we can do here.

- ALWAYS_ON_TOP not persistent when child -> top
  WM removes ALWAYS_ON_TOP state when reparenting,
  hence reinforce it when Child -> Top.
Refine commit c9fcc8cd510abc0cbebb872dc3e457327655e778 (NEWT X11Window.c comments)
Bug 924: Make ALWAYS_ON_TOP Persistent when Reparenting (child -> top) (2nd attempt)

Commit c8726ef04b94ad8e66e1191a06ff793b908d130c reinforced ALWAYS_ON_TOP in native reconfig code
issued at reparenting call, which might be too early for the WM.

Perform ALWAYS_ON_TOP reinforcement from java side when reparenting CHILD -> TOP was successful
and visibility is reached. X11 only!

NewtAWTReparentingKeyAdapter: Add 'a' alwaysOnTop toggle to test w/o applet code.
Bug 924: Fullscreen toggle in X11 requires a 'sleep' on sluggish WMs (Unity) ; Block insets change while toggling fullscreen mode.
Bug 925: Use proper common profile and test compatibility for GLContextImpl's default VAO.
Bug 925 - Accept an ES3 Context, if reported via GL-Version-String w/o EGL_OPENGL_ES3_BIT_KHR

Add Quirk 'GLES3ViaEGLES2Config': ES3 Context is used via EGL_OPENGL_ES2_BIT and 'version 2' for create context attributes.

- GLContextImpl.setGLFunctionAvailability(..)'s ES version validation
  only fails if requested major version == 1 and doesn't match.
  Hence requesting major==2 and having version 3 is tolerated.

- GLContextImpl.setGLFunctionAvailability(..)'s Quirks:
    requested-major < has-major -> Adding GLES3ViaEGLES2Config

- EGLDrawableFactory.mapAvailableEGLESConfig(..):
  Reflects has-major version, i.e. GLES3ViaEGLES2Config situation where
  an ES2 request leads to an ES3 version.

Note: All workarounds can be found via lookup of GLES3ViaEGLES2Config (as usual when using quirks).
Bug 925 - Refine GLContextImpl.setGLFunctionAvailability(..)'s ES version validation

Refine GLContextImpl.setGLFunctionAvailability(..)'s ES version validation:
+            //     - fail if ES major-version mismatch:
+            //       - request 1, >= 3 must be equal
+            //       - request 2 must be [2..3]

i.e. the following is accepted, otherwise fails:
  request   has
  1         1
  2         2,3
  3         3
  4         4
  ...
Bug 929 - Reflect ES3 Compatibility with ES2

- Map ES2 -> ES3 GLProfile, if available

- EGLDrawableFactory: Don't query ES2 if ES3 is available

- Fix queries and get methods (GL, GLContext and GLProfile):
  - glES3.isGLES2()==true and glES3.getGLES2()!=null
  - ctxES3.isGLES2()==true,
  - glES3Profile.isGLES2()==true

- Enhance Unit test: TestGLProfile01NEWT
  - Test all GLProfile availability combinations
    based on implementing GLProfile

  - Test all GLProfile's isGL*()
    based on highest GLProfile identity

  - Test all GL's isGL*()
    based on highest GL identity.
Fix TestGLProfile01NEWT: Regression of commit 3d0ab3e6263dfdbb9dd0014443ad28b1c9b0c238
Bug 929, Bug 852 - Reflect ES3 Compatibility with ES2 / Add CPU Sourced Data API Func to ES3 Interface

Since ES3 is compatible w/ ES2 and CPU sourced data is [still] allowed (but marked deprecated),
re-adding them to the ES3 interface for completness.

Note: CPU sourced data API functions will be removed in ES4, similar to GL core >= 3.0