Replace ModuleDescriptorImpl implementation

Change the way modules are configured:
Add dependencies on other modules instead of adding additional package fragment providers
Refactor related code
Drop DependencyKind
Hide common new module creation in CliLightClassGenerationSupport
KT-5522 Rename refactoring on implicit lambda parameter 'it' should be allowed

 #KT-5522 fixed
Moved "Copy as Diagnostic Test" to Tools -> Kotlin.

Renamed class and done some cleanup.
"Copy as Diagnostic Test" is visible only in internal mode.
KT-5531 Introduce separate 'kotlin.internal.mode' property and use it to trigger red/black rectangles and debug information in error tooltips

 #KT-5531 fixed
Added test for KT-1735 Can't access "assert" function from stdlib

#KT-1735 fixed
Fixed collecting source files for multiple modules in incremental compilation.

Error led to analyzing same file twice.
Enabled Kotlin internal mode in JetPsiChecker tests.
Enabled Kotlin internal mode in IDEA run configurations.
Reverting internal mode state in tearDown of JetPsiChecker tests.
Boxing values merge fix. #KT-5588 Fixed

When merging Boxed value and something else just return MIXED_VALUE
Enabled inlining and optimization in bytecode tool window by default.
Simpler byte code generated for comparison with null and zero.

Analogous byte code is generated by Javac.
Move: Do not update Kotlin usages of extension members, add imports instead
  #KT-5378 Fixed
Pseudocode: Do not generate implicit return instruction inside of
Unit-typed lambdas
 #KT-5549 Fixed
Extract runReadAction/runWriteAction utility functions
Minor: fix some dictionary suggestions
Minor: Remove warning
Don't show full signature to user as he usually knows it
Add empty line to make main question more noticable