Support for synchronized native methods.

This change adds support for synchronized native methods by using
calls to MonitorEnter and MonitorExit on the JNIEnv*. There is
some tidying of the assembler and a straw man JNIEnv implementation.
The JNIEnv implementation just warns when MonitorEnter/Exit are called
and doesn't adhere to the correct JNIEnv layout.

Change-Id: I90ed6ec8f85f5b01b929f16e0dbdecadd0b01359
diff --git a/src/object.h b/src/object.h
index 31d4390..49940e0 100644
--- a/src/object.h
+++ b/src/object.h
@@ -436,7 +436,11 @@
   // Is the given method parameter a long or double?
   bool IsParamALongOrDouble(unsigned int param) const;
 
-  size_t ParamSizeInBytes(unsigned int param) const;
+  // Size in bytes of the given parameter
+  size_t ParamSize(unsigned int param) const;
+
+  // Size in bytes of the return value
+  size_t ReturnSize() const;
 
   void SetCode(const void* code) {
     code_ = code;