Rewrite the invoke stubs to use JValue[]s.

The tests were only testing the static stubs, so extend the tests to include
non-static stubs too.

Also add just enough of an ARM disassembler to disassemble the invoke stubs.

Change-Id: If71dfb66b8b8188f9d871914f0eaf1013c9993b9
diff --git a/test/ReflectionTest/ReflectionTest.java b/test/ReflectionTest/ReflectionTest.java
index 94c02aa..a9dc6e7 100644
--- a/test/ReflectionTest/ReflectionTest.java
+++ b/test/ReflectionTest/ReflectionTest.java
@@ -119,8 +119,8 @@
     try {
       f = ReflectionTest.class.getDeclaredField("s");
       f.set(null, Integer.valueOf(14));
-    } catch (Exception ex) {
-      ex.printStackTrace();
+    } catch (IllegalArgumentException expected) {
+      expected.printStackTrace();
     }
 
     f = ReflectionTest.class.getDeclaredField("z");
@@ -209,8 +209,8 @@
       System.out.println(Arrays.toString(m.getParameterTypes()));
       show(m.invoke(null));
       System.out.println("************* should have thrown!");
-    } catch (Exception ex) {
-      ex.printStackTrace();
+    } catch (Exception expected) {
+      expected.printStackTrace();
     }
   }