Remove InjectorForJDR.getPsiClassFinder()

Replace its usages by getJavaClassFinder(). Remove code duplication in
AnalyzerFacadeForJVM/LazyResolveTestUtil
Remove PsiClassFinder

Inline the implementation into JavaClassFinderImpl
Get rid of dependency on BindingTrace
Move utilities out of OverrideResolver
Remove trivial dependencies of 'serialization' module
Create DescriptorFactory utility class

Will contain utilities needed to create different common descriptors, such as
default getters/setters, enum values/valueOf methods, etc.
Refactor OverridingUtil.resolveUnknownVisibilities

Get rid of dependency on BindingTrace, move the corresponding error reporting
logic to OverrideResolver
Refactor DescriptorUtils

Remove dependency on org.jetbrains.jet.lang.psi, move utilities closer to their
usages, add NotNull annotations, fix formatting, etc.
Remove PSI usages from ScriptDescriptor
Move caching logic from java class scope to descriptor
Create special classes for decompiled Java enums

Simplify logic in JavaConstructorResolver and JavaClassResolver
Simplify JvmPrimitiveType, PrimitiveType

Delete utility methods from interfaces, move once-used methods to where they're
used
Move KotlinToJavaTypesMap, AsmTypeConstants to frontend.java

They're used only in compiler
Cleanup descriptors in frontend

Remove useless classes/interfaces, inline useless superclasses, make the code
greener
Move FunctionDescriptorUtil out of descriptors/
Extract LazyResolveStorageManager interface

StorageManager will be available at runtime, thus it can't depend on
BindingTrace
Remove unused 'trace' parameter in ModuleConfiguration
Minor, remove DataFlowValueFactory.INSTANCE

DataFlowValueFactory's methods are all static
Delete ReceiverValueVisitor

This is done because this visitor ties all ReceiverValue's together, which
makes descriptors depend on PSI (ReceiverValue -> ReceiverValueVisitor ->
ExpressionReceiver -> JetExpression). Descriptors will be available at runtime,
but PSI is very heavy, so this dependency should be gotten rid of
Make ReceiverValue.NO_RECEIVER = null

The artificial object is no longer needed, now that ReceiverValueVisitor is no
longer present. Use nullable ReceiverValue everywhere NO_RECEIVER could have
appeared, replace ".exists()" calls with checking against null