Delete JavaBaseScope.getPsiElement()
Remove useless methods from PsiClassFinder

Their only implementations called methods on a parameter + a utility. Move the
utility to DescriptorResolverUtils
Remove useless PsiClass parameter

It was used only for a debug message and an assertion that never happened
JavaClass, JavaPackage, JavaAnnotation

Create dumb wrappers over PSI elements, will be used for loading descriptors
from JVM reflection later (instead of PSI)
Migrate JavaClassResolver from PSI to JavaClass

Several places are still left and need special handling.  The overall behavior
of the resolver should not change in this commit (except for maybe different
small operations like creating names, fq-names, ...)
Minor, change method parameter from String to JvmClassName
Get rid of PsiMemberWrapper

Continue migration, use the new Java* classes instead everywhere
Minor, green code & move type transformer to "resolver/"
Refactor JavaConstructorResolver

Extract methods, fix warnings, use JavaClass/JavaMethod instead of Psi
Introduce JavaType and subclasses

Use JavaType instead of PsiType whenever possible.

In this commit the logic of checking whether a loaded parameter is a vararg
changed: instead of checking if the corresponding PsiType is PsiEllipsisType we
now check if the containing method has the ACC_VARARG modifier
Refactor JavaTypeTransformer and ValueParameterResolver

Use an instanceof-chain on a JavaType instance instead of PsiTypeVisitor in
TypeTransformer. Add a special method to handle vararg types, use it in
ValueParameterResolver
Introduce JavaClassifier

JavaClassifier is a common type for JavaClass and JavaTypeParameter. In almost
all of the places JavaClass remains to be JavaClass, except for the resolution
result of JavaClassType, which can be a type parameter. Add an assertion that
JavaClass is created only for a class and not for a type parameter. Delete
different creations of JavaClass in 'idea' (where there can be a type
parameter) by changing the interface of util functions.

Delete JavaModifierListOwnerImpl, extract its methods into JavaElementUtil and
use these implementations for every JavaModifierListOwner

Continue refactoring JavaTypeTransformer to work with JavaType, not PsiType
Rename JavaClassType to JavaClassifierType
Migrate JavaTypeTransformer from PsiType to JavaType

Add more wrapper methods to JavaClassifierType.

Inline the utility method adjustTypeUsageWithMutabilityAnnotations to the two
places where it was used. Also add JavaAnnotationOwner and change signature of
JavaAnnotationResolver to take JavaAnnotationOwner, not PSI
Migrate JavaAnnotationResolver from PSI to JavaElement

Create a bunch of annotation argument classes, which serve as wrappers over
PsiAnnotationMemberValue class, but also have a Name
Rename JavaCompileTimeConstResolver to AnnotationArgumentResolver
Move classes around in java-specific parts of compiler

- move JetClsMethod and JetJavaMirrorMarker to 'jetAsJava' package
- move JetClsMethodImpl out of 'wrappers' packages
- move TypeVariableResolver to 'resolver' package, make it package-local
- move MembersCache and NamedMembers to 'scope', make the former package-local
Migrate SAMUtils from PSI to JavaElement

- create JavaTypeSubstitutor as a mirror for PsiSubstitutor
- copy-paste MethodSignatureUtil.areSignaturesErasureEqual() and migrate it to
  JavaTypeSubstitutor
- use a pair of method and substitutor instead of
  'MethodSignatureBackedByPsiMethod'
- add JavaClass.getDefaultType() which goes into JavaPsiFacade and creates an
  unsubstituted PsiClassType for the class
- green code

The only PSI usage left is TypeConversionUtil.erasure(), which needs to be
copied and migrated somehow
Refactor TypeVariableResolver

Delete 'context' field which was used only for debugging
Refactor JavaSignatureResolver

Now it has the only method returning Initializer, an object which can be told
to initialize resolved descriptors later, or to obtain these descriptors.
Delete useless methods, combine the remaining ones