GLAutoDrawable/AnimatorBase: Add ExclusiveContextThread (ECT) feature; AnimatorBase: Add setModeBits/MODE_EXPECT_AWT_RENDERING_THREAD; FPSAnimator: Make transactions deterministic.

ExclusiveContextThread (ECT) allows user to dedicate a GLContext to a given thread.
Only the ECT will be allowed to claim the GLContext, hence releasing must be done on the ECT itself.

The core feature is accessible via GLAutoDrawable, while it can be conveniently enabled and disabled
via an AnimatorBase implementation. The latter ensures it's being released on the ECT and waits for the result.

Note that ECT cannot be guaranteed to work correctly w/ native (heavyweight) AWT components
due to resource locking and AWT-EDT access. This is disabled in all new tests per default and
noted on the API doc.

Note: 'Animator transaction' == start(), stop(), pause(), resume().

- Add ExclusiveContextThread (ECT) feature
  - GLAutoDrawable NEW:
    - Thread setExclusiveContextThread(Thread t)
    - Thread getExclusiveContextThread()

  - AnimatorBase NEW:
    - Thread setExclusiveContext(Thread t)
    - boolean setExclusiveContext(boolean enable)
    - boolean isExclusiveContextEnabled()
    - Thread getExclusiveContextThread()

- AnimatorBase: Add setModeBits/MODE_EXPECT_AWT_RENDERING_THREAD
  Allows user to pre-determine whether AWT rendering is expected before starting the animator.
  If AWT is excluded, a more simple and transaction correct impl. will be used.

- FPSAnimator: Make transactions deterministic.
  FPSAnimator previously did not ensure whether a transaction was completed.
  A deterministic transaction is required to utilize ECT.
  FPSAnimator now uses same mechanism like Animator to ensure completeness,
  i.e. Condition and 'finishLifecycleAction(..)'. Both are moved to AnimatorBase.

Tested manually on Linux/NV, Linux/AMD, Windows/NV and OSX/NV.
  - All new tests validated correctness.
  - All new tests shows an performance increase of ~3x w/ single GLWindow, where multiple GLWindows don't show a perf. increase.
Minor: GLWindow fix size validation; GLContextImpl: Remove hold ctx lock count constraints at destroy.
Add old Olympic demo from GL4Java - Make it use ES1 and suitable for FixedFunctionEmul.
build/test: newt-headless shall exclude AWT/SWT

TestNewtEventModifiersNEWTWindowAWT was incl. in newt headless
Adding GEOMETRY_SHADER support in ShaderCode, adding core GL3/GEOMETRY_SHADER unit tests. ; Simplified GLContext version number

- Adding GEOMETRY_SHADER support in ShaderCode, adding core GL3/GEOMETRY_SHADER unit tests

  Chuck Ritola reported in December 2012 that we lack support of GEOMETRY_SHADER
  and he provided a test case.

  The latter is cleaned up to use GL3 core profile features only
  tesing a pass-through and the flip-XYZ geometry shader.

  ShaderUtil is fixed.

- Simplified GLContext version number
  The OpenGL major/minor version is now hold in a VersionNumber instance
  to simplify usage. Also expose it via getGLVersionNumber() while marking
  getGLVersionMajor() and getGLVersionMinor() deprecated.
Move all Exclusive Context Thread (ECT) tests to it's own package to de-clutter core test package
Fix Bug 666: GLBase.java line 438 contained some invalid trailing characters (regression from e7064ece049705e013d80985eae698ce0ee3c4e3)
NEWT-MouseEvent getWheelRotation() API Update - Fixes Bug 659: NEWT Horizontal Scrolling Behavior (OSX, X11, Win32); Bug 639: High-Res Mouse-Wheel

- API update 'float getWheelRotation()':
  Usually a wheel rotation of > 0.0f is up, and < 0.0f is down.

  Usually a wheel rotations is considered a vertical scroll.
  If isShiftDown(), a wheel rotations is considered a horizontal scroll,
  where shift-up = left = > 0.0f, and shift-down = right = < 0.0f.

  However, on some OS this might be flipped due to the OS default behavior.
  The latter is true for OS X 10.7 (Lion) for example.

  The events will be send usually in steps of one, ie. -1.0f and 1.0f.
  Higher values may result due to fast scrolling.
  Fractional values may result due to slow scrolling with high resolution devices.

  The button number refers to the wheel number.

- Fix Bug 659: NEWT Horizontal Scrolling Behavior (OSX, X11, Win32)

  - See new API doc above

  - X11/Horiz: Keep using button1 and set SHIFT modifier

  - OSX/Horiz:
    - PAD: Use highes absolute scrolling value (Axis1/Axis2)
           and set SHIFT modifier for horizontal scrolling (Axis2)
    - XXX: Use deltaX for horizontal scrolling, detected by SHIFT modifier. (traditional)

  - Windows/Horiz:
    - Add WM_MOUSEHWHEEL support (-> set SHIFT modifier), but it's rarely impl. for trackpads!
    - Add exp. WM_HSCROLL, but it will only be delivered if windows has WS_HSCROLL, hence dead code!

  - Android:
    - Add ACTION_SCROLL (API Level 12), only used if layout is a scroll layout

    - Using GestureDetector to detect scroll even w/ pointerCount > 2, while:
         - skipping 1st scroll event (value too high)
         - skipping other events while in-scroll mode
         - waiting until all pointers were released before cont. normally
         - using View config's 1/touchSlope as scale factor

- Fix Bug 639: High-Res Mouse-Wheel
  - getWheelRotation() return value changed: int -> float
    allowing fractions, see API doc changes above.

  - Fractions are currently supported natively (API) on
    - Windows
    - OSX
    - Android

- AndroidNewtEventFactory ir refactored (requires an instance now) and
  AndroidNewtEventTranslator (event listener) is pulled our of Android WindowDriver.
LinuxMouseTracker: Fix inverted Y-axis & missing button release.

Signed-off-by: Xerxes Rånby <xerxes@zafena.se>
ShaderState: Reduce hash-map utilization at shader switch (reset uniforms/attributes); Refine API doc.
Merge remote-tracking branch 'xranby/NEWT-input'
README: Add new IRC channel, mark Jabber deprecated
README: Add new IRC channel, mark Jabber deprecated
Sync LauncherUtil w/ GlueGen commit 1b9f0739ecc25105384b557afa698c42e08d4cc6 (adding main-cmdline-args)
Fix Bug 669: Recursive GLContext makeCurrent()/release()

Culprit:
  GLContext's makeCurrent() didn't clear the boolean flag 'unlockContextAndSurface'
  in case the context is already current (-> recursion).
  Above case was detected within a code block tailed by a finally block,
  which acted on mentioned flag, i.e. called lock.unlock() and hence decremented the lock count
  even though the method return w/ successful state.

  Fixed.

Added debug code:
  GLContext.release() debug code (DEBUG | TRACE_SWITCH),
  recording stack trace of last release() call, which is dumped in case no current was current.

Added 2 unit tests:
  - Simple recursive GLContext makeCurrent()/release() from within GLEventListener's display().
    Test also validates lock count and lock ownership.

  - GLAutoDrawable display() of another GLAutoDrawable
    from within GLEventListener's display(..).
NEWT/Android: Full Lifecycle for WindowDriver; Using static ViewGroup; AWTRobotUtil: More tolerant for non AWT env.; Fix adb-launch-*

- NEWT/Android WindowDriver
  - Full Lifecycle, remove refs on closeNative()
  - Respect isFullscreen()
  - Using static ViewGroup if available and surface not ready, allows running from main()

- AWTRobotUtil: More tolerant for non AWT env.
  - Check for NEWT first
  - Only use AWT iff available, which allows running on Android

- Fix adb-launch-*
  - Launch main/junit tests
Adapt to change 5060b728b26a89a14367f8fca9f4eb7968f719ca: ShaderState.uniform(..) returns false if no location available.
TestSwingAWTRobotUsageBeforeJOGLInitBug411: Fix 'chicken egg' init problem w/ AWTRobot, i.e. NativeWindow not yet initialized.

Regression since: 50f997557b91a2f014ef0c2ea848c5c326d0cfb2
Android/NewtVersionActivity: Dump avail. GLCaps / Use stderr, since log would cap 'em (too long).
Android: Allow selection of native window formats RGBA8888, RGBX8888 and RGB565; Fix HiSilicon/Vivante/Immersion.16 EGLConfig selection (zero depth buffer @ visualID)

- NEWT/Android Fix PixelFormat/NativeWindowFormat/VisualID Selection
  - Fix allows proper selection of native window formats: RGBA8888, RGBX8888 and RGB565

  - Selection is performed in 3 steps:
    1) @ Construction (non native): SurfaceHolder.setFormat( getSurfaceHolderFormat( caps ) )
    2) @ Native Surface Creation: getANativeWindowFormat( androidFormat) -> ANativeWindow_setBuffersGeometry(..)
       Note: The set native format is revalidated, i.e. read out via ANativeWindow_getFormat(..).
    3) @ EGL Creation: ANativeWindow_getFormat(..) -> fixCaps(..) - simply fixing the chosen caps.

- NEWT GLWindow.GLLifecycleHook.resetCounter:
  - Also reset GLAnimatorControl's counter, if attached.

- NEWT WindowImpl -> GLLifecycleHook.resetCounter() calls issued _after_ operation before unlock().

- JOGL/EGLGraphicsConfigurationFactory
  - Validate whether the visualID matching EGLConfig depth buffer is suitable.
    On HiSilicon/Vivante/Immersion.16: Depth buffer w/ matching visualID is zero!

- NativeWindow/Capabilities.compareTo: Fix alpha comparison