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
JS backend: add NotNull annotations
JS backend: convert PropertyTranslator to Kotlin
JS backend: support for explicit delegation
JS backend: support for explicit delegation, fixes after review