Bug 952 - JAWTWindow.JAWTComponentListener's ctor() and detach() may deadlock due to AWTTreeLock acquisition while add/remove AWT listener

The AWTTreeLock is acquired by Component.removeHierarchyListener
and as for _every_ AWT component, modifications shall happen on the AWT-EDT.

IMHO the user shall offload AWT modifications to the AWT-EDT
similar to what JOGL's GLCanvas and NEWTCanvasAWT does.

However, since JAWTWindow also represents a NativeWindow instance
we shall offload AWTTreeLock methods ourselves!
NEWT Window: Add API Doc for Custom Window Icons
NativeWindowFactory: Add Support for creating a platform agnostic wrapped AbstractGraphicsDevice/NativeWindow
NewtFactory: Fix createWindow(..) ctor w/ given native window handle (use displayConnection string and screen-idx)
NEWT: Add Support for AWT-Less Applet3

- Adding 'plugin3-public' jar and sources for Applet3 support, copied from icedtea-web3

- Added com.jogamp.newt.util.applet.JOGLNewtApplet3Run capable to run Applet3
Add Applet3 test html pages
Sync plugin3-public jar and source files
Add NativeWindowFactory.getLocationOnScreen(NativeWindow nw) to retrieve the NativeWindow location on screen
NativeWindowFactory.createWrappedWindow [WrappedWindow]: Using UpstreamSurfaceHookMutableSizePos to take position into account; WrappedWindow: invalidate and destroy - display device could be opened.
NewtFactory: Cleanup / createWindow(..) w/ parentWindow variant shall fall back to top-level ctor if parentWindow is null
Adapt to new plugin3 / Use browser window's location on screen for top-level window.
applet3 test page: remove redundant 'Applet3' in link name
NEWT WindowImpl: Don't waitForPosition(..) if child window - issues w/ different toolkits!

With Applet3 plugin (firefox - using GTK), our child window seems to receives the absolute position,
or 'arbitrary' values (?).
Will need to figure out how to properly determine these cases.

In the meantime, simply turn off waitForPosition(..) for child windows,
which shall not harm NEWT.

Impacts following actions as child window:
- createNativeWindow
- reparent
- fullscreen
JOGLNewtApplet3Run: Don't set position if normal child window.
Bug 970: NEWT OSX ChildWindow setVisible(..) does not hide child window appropriately

Instead of using [mWin orderBack: mWin] for child windows,
utilize [mWin orderWindow: NSWindowOut relativeTo: [pWin windowNumber]]
Bug 972 - Reduce ClassLoader Lookup, i.e. Class.forName(..): GLProfile, GLContextImpl, DisplayImpl

GLProfile, GLContextImpl:
  - ReflectionUtil.DEBUG_STATS_FORNAME: Dump forName stats if set
  - Cache GL*Impl and GL*ProcAddressTable Constructor<?> for GLContextImpl's createInstance(..)
  - Remove off-thread early classloading thread which only adds complications

DisplayImpl:
  - Remove one redundant availability test
Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)

Add FIXME note ..
Bug 973: NativeWindowFactory: Needs service provider interface (SPI) for TK specific implementations (Scaling)
TextureIO: Support PNGTextureWriter w/ TextureData IntBuffer (via PNGPixelRect and PixelFormatUtil)

TextureData IntBuffer could be caused by AWT read-pixels
but is not seamlessly supported via PNGPixelRect since the latter
uses a hardcoded ByteBuffer.

Add static PNGPixelRect.write(..) supporting IntBuffer
to support this case for now.
PNGPixelRect instances do not support any Buffer type to avoid
a bloated implementation.

PixelFormatUtil adds support for int32 pixel format conversion.
Bug 962 - AWTGLReadBufferUtil should use aligned BufferedImage [for resized images]; Fix GLReadBufferUtil GL_PACK_ROW_LENGTH

AWTGLPixelBuffer is being reused when used via AWTGLPixelBufferProvider
even when resized.

AWTGLPixelBufferProvider uses  GLPixelBufferProvider's requiresNewBuffer(..)
which returns true if
  - allowRowStride==true and pixel-buffer size < required-size, or
  - allowRowStride==false and pixel-buffer size < required _or_ width doesn't match

otherwise it returns true, i.e. the AWTGLPixelBuffer is reused.

Hence the used BufferedImage might need to be aligned,
i.e. using AWTGLPixelBuffer's getAlignedImage(..).

+++

GLReadBufferUtil shall use current texture-data width for GL_PACK_ROW_LENGTH,
not the static GLPixelBuffer's width, which may not reflect image dimension (resize)

+++