Use javaClass instead of getClass()
Don't load Object as a supertype for Java classes

 #KT-4890 In Progress
 #KT-5002 Fixed
Introduce kotlin.Cloneable

- Cloneable is a trait with a single member 'clone', which is mapped to
  java.lang.Cloneable on JVM
- 'clone' is non-abstract to be able to call 'super.clone()' in the
  implementations. Also it's nice that if you need your class to be Cloneable,
  most of the time just inheriting from Cloneable will work
- hack 'super.clone()' in JVM intrinsics and TImpl delegation generation
- make arrays Cloneable, handle 'clone()' calls in the intrinsic

 #KT-4890 In Progress
Introduce kotlin.jvm.Finalizable

 #KT-4890 Fixed