fix array class name length calculation in invoke

The original calculation ommitted the last character, changing
e.g. "[I" into "[".
fix zero-extension of constants in x86 compiler

scalac may emit a ldc followed by an i2c, whereas javac does the
conversion (including zero extension if necessary) at compile time.
This commit ensures we handle the i2c case properly.
handle sign extension of constants of various lengths

This is a generalization of 9918ea6 which handles 8-bit and 16-bit as
well as 32-bit values.
avoid allocating new memory in hashMapRemove when GCing

This ensures that we don't abort when running an internal finalizer
that removes from a hash map.
throw CloneNotSupportedException if Object.clone called on non-Cloneable
filter InnerClasses attribute for relevant classes in JVM_GetDeclaredClasses

The InnerClasses attribute may have entries for classes declared
inside classes we don't care about, so we must check each entry's
outer class reference and make sure it matches the one we do care
about.
implement JVM_ConstantPoolGetFloatAt

This commit also simplifies JVM_ConstantPoolGetDoubleAt, which cannot
throw an exception and thus need not go through vmRun.
fix special case of exception handler table translation

scalac may generate bytecode such that an exception is thrown within
the bounds of a handler for that exception such that the throw is the
last instruction in the method, which we weren't handling properly.
fix element spec calculation for multidimensional primitive arrays

The element class for e.g. [[[I should be [[I, not [I.
move call to Classpath::shutDown

We must be in the Active state, not the Exclusive state when calling
this method since it may execute arbitrary Java code.  This fixes an
assertion failure in makeNew.