Switch to new decompiler API for IDEA

Patch from Roman Shevchenko adapted
Move caching of kotlin binaries classes to application level

Fix code in DecompiledUtils
Minor: remove explicit dependency on JavaDescriptorResolver from AnnotationDescriptorDeserializer
Minor code fix in NavigateToDecompiledLibraryTest
Move test data for NavigateTo*Library tests to a more specific folder
Decompiler: introduce ResolverForDecompiler as dependency for DecompiledDataFactory

Extract JDR based implementation of ResolverForDecompiler from DecompiledDataFactory
Add test for decompiled text
Add MissingDependencyErrorClass which is treated specially during rendering
Rewrite DecompiledDataFactory to Kotlin
Refactor DecompiledDataFactory
Decompiler: Introduce DeserializerForDecompiler

Component which can "resolve" descriptors without project
It builds dummy descriptors for dependencies which are enough to build decompiled text
Decompiler: Test that checks consistency between project-based and non-project-based decompilers
Decompiler: switch to using non-project based decompiled text builder

Move ProjectBasedResolverForDecompiler to test root (since only used for validating)
Decompiler: remove project from decompilation API

Remove JetDecompiledData, DecompiledText is enough
Move JetDecompiled to upper level, rename to JetClsFile
Move caches into JetClsFile and JetClassFileViewProvider
Rewrite JetClassFileViewProvider and JetClsFile to Kotlin
DecompiledDataFactory -> DecompiledTextFactory
Minor: Add assertion in DecompiledTextFactory
Test checking that no PSI is built for synthetic classes produced by compiler
Test for reference to nested class in library
Decompiler: do not create decompiled files for inner classes and anonymous functions

Rewrite DecompiledUtils to Kotlin
Decompiler: allow java decompiler to process trait impl classes
Decompiler: display a comment when file has incompatible abi version