JOGL/Util: Add generic 'TimeFrameI' for key frame animation of 'things' basen on integer milliseconds.
*AudioSink: Add byte/time calc to AudioDataFormat, *AudioFrame OO changes, Reuses ALAudioFrames to ease GC, Ringbuffer changes

- Adapt to Ringbuffer changes of GlueGen commit f9f881e59c78e3036cb3f956bc97cfc3197f620d

- Favor AudioSink 'AudioFrame enqueueData(int pts, ByteBuffer bytes, int byteCount)',
  - Impl. shall reuse AudioFrame's instead of creating them on the fly
  - User shall simply pass the net data required, while receiving an internal AudioFrame

- Add byte/time calc to AudioDataFormat:
  - Add getDuration(byteCount) and getByteCount(ms).

- *AudioFrame OO changes:
  - abstract AudioFrame extends TimeFrameI
  - allow setting of all components to reuse instanced (GC clean)

- ALAudioSink reuses ALAudioFrames to ease GC:
  - Remove creating temporary objects to ease GC

  - ALAudioFrame holds ALBuffer name, remove ActiveBuffer type.

  - Use ALAudioFrame similar to TextureFrame in GLMediaPlayerImpl,
    i.e. fill them in 'full' Ringbuffer and move them in-between 'full'/'playing' Ringbuffer.

  -
GLMediaPlayer Multithreaded Decoding: GLMediaPlayer* (Part-6) - DONE

Multithreaded decoding and API should be considered stable by now,
minor changes may apply if Android/OMX impl. requires it.

We still need to solve TODO's as listed below, copied from 474ce65081ecd452215bc07ab866666cb11ca8b1.

+++

- *TextureFrame OO changes:
  - TextureFrame extends TimeFrameI

- GLMediaPlayerImpl*
  - Adapt to Ringbuffer changes of GlueGen commit f9f881e59c78e3036cb3f956bc97cfc3197f620d

  - Fix impl. method's API doc
    - getNextTextureImpl(..) returns video PTS

  - Fix audio-only playback

  - frame dropping shall only happen if:
     - previous frame has not been dropped
     - frame is too later
     - one decoded frame is already available

  - Don't block for decoder anymore:
     - nextFrame = "videoFramesDecoded.getBlocking() -> videoFramesDecoded.get()";
     No 'next decoded frame avail' only could mean:
       - slow decoding/hardware
       - slow transport
     hence we shall not block rendering.

  - Add DEBUG output if using last frame

  - Add integer property 'jogl.debug.GLMediaPlayer.StreamWorker.delay' in milliseconds
    to simulate slow decoding, i.e. delay is added in StreamWorker after decoding
    before pushing new frame to Ringbuffer.

  - FFMPEGMediaPlayer:
    - audioFrameLimitWithVideo 128 -> 64
    - audioFrameLimitAudioOnly 128 -> 32
    - uses AudioSink's 'enqueueData(int pts, ByteBuffer bytes, int byteCount)'
    - fixes for audio-only playback

+++

Working Tests: MovieSimple and MovieCube

TODO-1: Fix
  - Android
  - OMXGLMediaPlayer

TODO-2:
  - Fix issue where async audio frames arrive much later than 1st video frame, i.e. around 300ms.
  - Default TextureCount .. maybe 3 ?
  - Adding Audio synchronization ?
  - Find 'truth' about correlation of audio and video PTS values,
    currently, we assume both to be unrelated ?