Move file
Extract single notification manager
Rewrite Absent Jdk Annotations stripe to balloon
Rename file
Do not hide kotlin configuration notifications
Rename class
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.
Merge remote-tracking branch 'remotes/upstream/master' into tail-recursion