Unwrap Synchronizer in BaseFunction.toSource().
Patch for Bug 827538

NativeJavaMethod overloadCache was not sychonized on traversal which
could lead to potential ConcurrentModificationException. Replaced the
LinkedList implementation with CopyOnWriteArrayList which is guaranteed
not to throw a ConcurrentModificationException during iteration.
Patch for Bug 738388

ClassCache returned a non-thread safe HashMap that is shared between
threads. Updated the cache to use ConcurrentHashMap as the cache
backing.
Override ScriptableObject.isEmpty in NativeArray

Closes #104
Merge pull request #103 from cronik/master

Use concurrent collections where appropriate

Fixes bugs 827538 and 738388
Reduce concurrency level / memory footprint in concurrent class cache hash maps
Merge remote-tracking branch 'upstream/master'