Support built-in Obj-C types in return value position

id is now resolved as ObjCObject, SEL as ObjCSelector, Class as ObjCClass.

Native.objc_msgSend now is the only message-sending native method, and it
returns a NativeValue, instance of which is created in native code based on the
signature of the called method. Returned primitives are stored into
PrimitiveValue, which now has a few useful accessor methods.

Problem with BOOL resolving as id is fixed by including objc/objc.h, where it's
declared.

Also some actions were taken for tests to reduce used memory in tests
Minor, refactor Obj-C native codegen

Get rid of lots of "sendMessage" methods, doing the same thing. Now there's the
only objc_msgSend method which returns NativeValue which is casted now to the
needed type in the generated bytecode. This is probably less efficient but a
lot clearer and easier to maintain than lots of methods.

Also move Native to jet/objc/, get rid of the outdated jet/runtime/objc package
KotlinNative now uses libffi instead of NSInvocation
Don't use temporary files in Obj-C indexer

The indexed data is serialized into a byte array instead (protobuf uses
std::string for this)
Cache frequently used JNI classes, methods, fields
1