gluegen/OSX: Add property java.osx.frameworks.dir
Platform: Add 'getCurrentSleepJitter()'
RunnableTask: Add documentation, incl. unit test. Add ReflectionUtil.MethodAccess, a convenient Method instance accessor.
Add assertion to RunnableTask test case (forgot in commit: 43b7675259eb76c570b6cc3a44fec2b9f6410697)
ReflectionUtil: Catch NoClassDefFoundError @ getMethod() for robustness
Move TRACE_LOCK from RecursiveLock -> Lock
cpptasks MacOSX 10.5 support (bug 528): Use '-mmacosx-version-min=10.5' flag for compiler/linker.

As Wade Walker suggests, use '-mmacosx-version-min=10.5' compiler/linker flag,
which doesn't break 10.6 nor 10.7 builds, still need confirmation whether it
works on 10.5!
Add 'TestJarsInJar.jar' test JAR file for upcoming JarUtil tests (Jar in Jar).
JarUtil: Improve Robustness (Bug 522) and API doc, prepare for Jar-In-Jar. Add unit test.

Misc.:
  - IOUtil: Add toURL* methods
  - TempJarCache: Add 'URL getResource(String)'
JarUtil (Fix Bug 522): Handle case where given URL doesn't contain any '/' (eg. Eclipse 'rsrc:' case)

- Use ':' as 'path' delimiter in case no path via '/' is given.

+++

Manual tested w/ Eclipse:

Preparations:
===============

1) Set up a vanilla eclipse (3.7.0) workspace

2) Add the JOGL User Library:
  - Window.Preference
   - Java.Build_Path.User_Libraries:
     + JOGL
        + gluegen-rt.jar
        + jogl.all.jar
        + gluegen-rt-natives-linux-amd64.jar
        + jogl-all-natives-linux-amd64.jar

        You may add all other native JARs here.
        Note that these are not required in the CLASSPATH by JOGL,
        however, they are required by Eclipse to export your project as a Runnable JAR File.

3) New test project
  -  Right-click your project in the Package Explorer and click "Properties".
       - Select "Java Build Path" and click the "Libraries" tab.
          + JOGL
  - Add some simple code ..
  - Run as Java Application ..

Test-1:
=========

Export
  - Right-click your project in the Package Explorer and click "Export"
    - Select Java.Runnable_JAR_file
      + Launch configuration
      + some destination path
      + Library handling:
        Copy required libraries into a sub-folder next to the generated JAR

Result: Works!

./lala01.jar
./lala01_lib/jogl.all.jar
./lala01_lib/jogl-all-natives-linux-amd64.jar
./lala01_lib/... etc ..

Test-2:
=========

Export
  - Right-click your project in the Package Explorer and click "Export"
    - Select Java.Runnable_JAR_file
      + Launch configuration
      + some destination path
      + Library handling:
        Package required libraries into generated JAR

Result: Works!

./lala02.jar:
  Manifest-Version: 1.0
  Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar
                      jogl-all-natives-linux-amd64.jar jogl.all.jar
  Class-Path: .
  Rsrc-Main-Class: Test01
  Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
Fix regresseion of commit 04391a3f417e10e1b6dafbd8becc63659af633c3 (forced pending '/' to filename)
Fix TempJarCache's Multi-User Bug (Reported by Martin Hegedus)

It turns out that Java's File mkdir() only makes the directory writable for the current user,
I have missed this fact. Great catch.

1. Fix TempJarCache.isInitialized(): Return false if not successfully initialized.

It merely returned if it has passed 'initSingleton()' and ignored the staticInitError.

2. Fix TempFileCache pattern of determining the temp base directory

We cannot just use a static directory name, due to the multi user environment
and user write permissions on File.mkdir().

IOUtil has a new 'getTempDir(..)' methods, which iterates through integers [000000-999999]
until a writeable directory could be found or created.

TempFileCache initializes this temp base dir in the static block ensuring
the value is final for the JVM / ClassLoader.

Updated comments/docs in TempFileCache.
Fix regression (#2) of commit 04391a3f417e10e1b6dafbd8becc63659af633c30 (remove isDirectory(), which requires extra permissions)
Bump to 6u29
Refine TempJarCache/JNILibLoaderBase ; Add TempFileCache destroy() for instance.

JNILibLoaderBase's 'addNativeJarLibs(Class<?> classFromJavaJar, String allNativeJarBaseName, String[] atomicNativeJarBaseNames)'
now just attempts to load the 'all' variant, and will continue w/ atomics if not successful (ie not available).

It skips the validation of a 'allJavaJarPrefix', ie validating the 'classFromJavaJar holding JAR file,
which allows GLUEGEN/JOGL classes to be contained in JAR files other than the original.
DynamicLibraryBundle/NativeLibrary: Add destroy() to bundle, causing unloading of native library.
Minor edits / Put gluegen-rt 'libBaseName' static.
JVMUtil: Remove Platform dependency - It's being called by Platform and is private API.
Test: Add unload of libraries as last test.
TempJarCache/JNILibLoaderBase: Identify the Jar files by their URL within our lifecycle. JarFile's hash almost always differs.