update to more recent version of Android class library

** Please don't merge this until after v1.1 is tagged **

Lots has changed since we forked Android's libcore, so merging the
latest upstream code has required extensive changes to the
Avian/Android port.

One big change is that we now use Avian's versions of
java.lang.Object, java.lang.Class, java.lang.ClassLoader, some
java.lang.reflect.* classes, etc. instead of the Android versions.
The main reason is that the Android versions have become very
Dex/Dalvik-specific, and since Avian is based on Java class files, not
dex archives, that code doesn't make sense here.  This has the side
benefit that we can share more native code with classpath-avian.cpp
and reduce the amount of Java/C++ code duplication.
Two reasons: 1. when using the Avian class library, we can make the string without allocating and copying to a new array (we did this in pure Java before, but now we need to be able to use this class in combination with Android's String class, which doesn't have the non-standard constructor with a boolean copy parameter), and 2. when using the Android class library, java.lang.System's static initializer will fail if Class.getComponentType create's a new String via Java due to Android's String class having a static initializer that depends on System's static initializer already having completed.  There were several possible ways to address the second issue, but I figured I'd address them both with the same strategy.