Minor formatting and unused code deleted
Refactoring of switches codegen parts
When by enum:
Generate TABLESWITCH/LOOKUPSWITCH bytecode command in case of "when" by enum entries
When by String constants:
Generate TABLESWITCH/LOOKUPSWITCH bytecode operation for when operator by String constants
When2Switch: check if entry set is not empty
When2Switch: generate ifnonnull check for nullable values before *switch-opcode
When2Switch: tests for non-literal expression in when by integral
Fix shortening references for receiver in MakeTypeExplicitInLambdaIntention

 #KT-5474 Fixed
Fix shortening references for return type in MakeTypeExplicitInLambdaIntention

 #KT-5475 Fixed
Add test for the same pitfall for parameter types in MakeTypesExplicitInLambda
Fix ConvertAssertToIfWithThrowIntention

to not invoke ShortenReferences on file created by JetPsiFactory

 #KT-5476 Fixed
Add test documenting a minor issue introduced in previous commit
Fix InsertExplicitTypeArguments intention to insert imports for shortened types

 #KT-5489 Fixed
Fix SimplifyBooleanWithConstantsIntention intention to avoid analyzing files created by JetPsiFactory
Fix ConvertAssertToIfWithThrowIntention to avoid shortening more references than intended
Remove Object from supertypes in testData of compiledJavaCompareWithKotlin
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