TypeProjection interface extracted
Suppress warnings when compiling runtime for tests
Field made final
Use wrapping instead of copying when creating nullable/non-null types

 Why wrapping is better:
1. It's requires less memory: a copy has many fields, while a wrapper has only one
2. It preserves laziness of types
Common logic extracted from lazy type implementations
Profiler uses loggers

This allows us to leave profiler calls in production code
Delete JetTypeMapperMode.TRAIT_IMPL

The code is much easier with a simple method mapTraitImpl
Add JetTypeMapper.mapClass

Should be used instead of "mapType(*.getDefaultType(), IMPL)" pattern
Move JetTypeMapperMode to JetTypeMapper class
Generate values()/valueOf() even for empty enums
Load annotations on properties declared in traits
Refactor codegen of property backing fields, TImpl, etc.

- remove synthetic method code generation from TraitImplBodyCodegen, use
  PropertyCodegen for that
- don't try to generate synthetic methods for constructor properties
- inline methods, NotNull, renames, etc.
Remove duplicated Delegated properties classes from stdlib
Do not fail on bad Kotlin configuration if there are no Kotlin files
Added idea.build.number to update_dependencies.
Fixed build for non windows agents on internal buildserver.
Fix conversion of Java class literals
Do not generate nullable types when converting "instanceof" to "is"
Rename getMyType() method
 KT-4043 "Find usages ignores class names usages as class objects"
Check removed files as well as dirty ones