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