NEWT Windows: Add more verbose DEBUG information for FOCUS handling
Fix regression of commit e5692f615a8c40e7ca750261baf5e8ecdb0a34b8: CGL/CGLExt Robustness ..
Fix NEWT KeyEvent: Deliver keyChar w/ pressed and released; Deliver proper modified flags and modifier-key events; Simplify Windows key handling

Preface: Modifier-keys are SHIFT, CTRL, ALT and META and they have a matching modifier-bit.

- Simplify Windows key handling
  - Employ MapVirtualKey(..) for virtual-key to character and scancode to virtual-key mappings,
    allowing to drop tracking of keyCode to keyChar in java code.

    This also removes the platform restriction of delivering keyChar at TYPED only.

- Deliver keyChar w/ pressed and released
  - Due to the lift restriction on the Windows platform (see above),
    we can deliver keyChar w/ all key events on all platforms.

- Deliver proper modified flags and modifier-key events
  All modifier-keys deliver pressed, released and typed events
  with their modifier-bit set.

The above is covered by unit tests, which passed on X11, Windows and OSX (manual test run).
ShaderProgram: Program name is valid if non zero; Add init(GL) return value for success.
TestInitConcurrent02NEWT: Disabled for auto unit test until further analysis - Windows/ATI driver crash
Shader: Add '#define texture2D texture' for GLSL >= 130 ; TestGearsES2AWT add forceGL3; TextureDraw01ES2Listener uses defaultShaderCustomization()
Add OSX CALayer OpenGL 3 (core) support: Derive pixelformat from parent (GL3), use GL3.2 compatible shader; Use VBO in general.

Covered by:
  Auto unit tests: TestOffscreenLayer01GLCanvasAWT, TestOffscreenLayer02NewtCanvasAWT
  Manual: TestGearsES2AWT '-gl3 -layered'
Fix ProjectFloat (Bug 633): Adding missing offset of sliced buffer usage; reduce buffer usage (performance) in favor of float[].

Thomas De Bodt reported this error and provided the unit test.
Fix Unit Tests regarding commit 55f4405dbf9253e6ca686e44c50b2cfc1af7f3eb: Shader program name is valid if non-zero.
*FontLoader: Order fields in init-order, make private.
jogl-test-applets: Add 'force gl3' GearsES2 Applet for GL3 core testing on OSX
MacOSXCGLContext: Fix ShaderCode instantiation .. (duh!) ; Tested via reparenting TestParentingFocusTraversal01AWT
Notes: NVIDIA Tegra discard problem ; TestSharedContextVBOES2NEWT crashes the NV driver sporadically
NEWT Windows KeyEvent: We have to store the keyChar for typed events, since keyChar from pressed/released may be wrong (Uppercase: SHIFT-1, etc ..)

Partially reverts commit: b62e1d027c289877686d6008ea8dd40e4e1541ec
NEWT KeyEvent API doc: Document Windows shift+non-uppecase_char, commit c135d638fe820457977747e3d45960da64038d53
MacOSXCGLContext[NSOpenGLLayer/NSView]: Propagate drawable change

Propagate drawable change to MacOSXCGLContext where either context/NSView or context/NSOpenGLLayer
association needs to get updated.

Fixes drawable/context switch.
GLAutoDrawable: Fix GLEventListener lifecycle and expose more user control (API Change) ; Added GLDrawableUtil

A GLEventListener resides in two states, initialized and uninitialized.
When added to a GLAutoDrawable, it is uninitialized.
A first 'display()' will issue GLEventListener's 'init(..)' which renders it initialized.
This is usually accompanied by 'reshape(..)' propagating the drawable's dimension.

Destruction of the GLAutoDrawable will issue GLEventListener's 'dispose(..)' which renders it uninitialized.

It turns our these means of GLEventListener controls are not sufficient in case
the user requires to remove and add them during the lifecycle and rendering of their GLAutoDrawable host.
GLAutoDrawable 'removeGLEventListener(..)' merely removes the GLEventListener from the list,
but does not complete it's lifecycle, i.e. issues 'dispose(..)' if initialized to realease GL related resources.

Hence the following essential API changes are made to complete the lifecycle:

+  public GLEventListener disposeGLEventListener(GLEventListener listener, boolean remove);

   disposing a single GLEventListener, allowing it's removal from the list being optional

This is demonstrated via GLDrawableUtil.swapGLContextAndAllGLEventListener(GLAutoDrawable a, GLAutoDrawable b), see below.

++++++++

Further more the following API changes were made to expose complete control of
GLEventListener to the user:

-  public void removeGLEventListener(GLEventListener listener);
+  public GLEventListener removeGLEventListener(GLEventListener listener);

   The return value allows simple pipelining, and also delivers information whether
   the passed listener was actually removed.

-  public GLEventListener removeGLEventListener(int index) throws IndexOutOfBoundsException;
+  public int getGLEventListenerCount();
+  public GLEventListener getGLEventListener(int index) throws IndexOutOfBoundsException;

   Dropping the redundant removal by index, while adding count and get methods.

+  public boolean getGLEventListenerInitState(GLEventListener listener);
+  public void setGLEventListenerInitState(GLEventListener listener, boolean initialized);

   Allows retrieving and setting of listener states.

All in all these API changes allows a user to experience all freedoms in dealing w/
GLEventListeners hosted by GLAutoDrawable impl. and shall be future proof.

Note that we have avoided the Iterator pattern due to it's overhead of temporal objects creation.
The simple indexed access allows us to implement each method as an atomic operation.

+++++++++++

Further more a simple enqueue(..) method has been added, allowing to just enqueue a GLRunnable
w/o provoking it's execution - as invoke(..) does.
This method pleases a use case where GLRunnables are batched and shall be executed later on..

   public boolean invoke(boolean wait, GLRunnable glRunnable);
+  public void enqueue(GLRunnable glRunnable);

+++++++++++

Added GLDrawableUtil, exposes utility function to rearrange GLEventListener, modifiy GLAutoDrawable, etc.

GLDrawableUtil.swapGLContextAndAllGLEventListener(GLAutoDrawable a, GLAutoDrawable b)
is tested and demonstrated w/ TestGLContextDrawableSwitchNEWT.

Manually tested on X11, OSX and Windows.
FPSAnimator: Wait '2 x period' or 20ms, whichever is greater in case of pause/stop - taking execution frequency into account
GLDrawableUtil.swapGLContextAndAllGLEventListener(..): Add glFinish() before and after ctx/drawable swap - sync'ing GL state

Otherwise a driver crash may occur on Windows/NVidia.
Adding Andres Colubri's Test Case (junit'fyed), which provokes a Deadlock on OSX - Adding a similar one w/o deadlock and less framework bits.

Andres Colubri reported a test case in the forum:
  <http://forum.jogamp.org/Thread-blocking-issue-with-AWT-but-not-NEWT-on-OSX-td4026674.html>

Which is now included as TestGLCanvasAWTActionDeadlock01AWT.
A similar w/ less framework bits and w/o dealock is also included as TestGLCanvasAWTActionDeadlock00AWT.

A followup commit will incl. a fix after further analysis.

A commit at this point where TestGLCanvasAWTActionDeadlock01AWT still freezes on OSX is done
to be able to reproduce the bug and see the fix as a patch.