Pass Obj-C method return type to native

This helps native code in constructing a value of the exact JVM type which is
needed in the calling code. For example, this eliminates the Bool-Char hack,
since the native code now knows it should construct a java.lang.Boolean. Also
this is needed to correctly construct a JVM mirror for a nil Objective-C object
pointer, since for constructing a JVM class out of the pointer we need to know
which class to instantiate, and we can't really figure this out on a nil
instance.

Also introduce Type class in native, a useful abstraction to represent any type
which could be mapped to/from JVM.
Minor, adopt to IDEA 13 code style settings format
Support nil, Nil and NULL in Obj-C interop

Every case except passing nil pointer to a concrete class (marked by a TODO)
1