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/src/object.h b/src/object.h
index 3a7efa2..ae435c6 100644
--- a/src/object.h
+++ b/src/object.h
@@ -490,7 +490,7 @@
   typedef void InvokeStub(const Method* method,
                           Object* obj,
                           Thread* thread,
-                          byte* args,
+                          JValue* args,
                           JValue* result);
 
   Class* GetDeclaringClass() const;
@@ -623,7 +623,7 @@
   // Find the method that this method overrides
   Method* FindOverriddenMethod() const;
 
-  void Invoke(Thread* self, Object* receiver, byte* args, JValue* result) const;
+  void Invoke(Thread* self, Object* receiver, JValue* args, JValue* result) const;
 
   const void* GetCode() const {
     return GetFieldPtr<const void*>(OFFSET_OF_OBJECT_MEMBER(Method, code_), false);