Rename JetPsiFactory to preserve history
Rewrite JetPsiFactory to kotlin, make project a property

Instead of passing to every function
All static methods are now member functions
Add JetPsiFactory(JetElement) function and use it
Minor: add missing static imports for PsiPackage.JetPsiFactory
Simplify ExpressionCodegen#generateConstructorCall

Don't go through StackValue.CallReceiver because it handles a variety of cases
when a callable descriptor has a receiver argument, an expected this object, or
both. Constructors can't have receiver arguments, so the resulting code is
greatly simplified
Refactor ExpressionCodegen#invokeMethodWithArguments

- for inlining purposes, take ResolvedCall.getCall() instead of a separate
  parameter
- split into two methods, the other one will be used for a more granular code
  generation of a method call
Minor, rename parameter
Minor, extract method JetTypeMapper#writeParameter
Minor, combine ENUM_NAME and ENUM_ORDINAL parameter kinds
Fix super constructor calls of anonymous objects and local classes

If a class inherits from another class which captures something (outer class
instance, receiver parameter, local variables, etc.), the constructor of the
former class should contain all the parameters of the super constructor as its
own parameters, so that it could make a proper super call. All such parameters
are now replicated in the derived constructor with kind = SUPER_CALL_PARAM,
_except_ sometimes an instance of the outer class (kind = OUTER), which can be
taken from the derived's own OUTER in certain situations (see the comments in
JetTypeMapper) to prevent multiple passing of the same argument.

Previously it worked only when inheriting from inner classes via a special hack
(ConstructorFrameMap).

Also reuse recently introduced ArgumentGenerator to automatically take care of
default and vararg arguments of super constructor

 #KT-5342 Fixed
 #KT-5343 Fixed
 #KT-3581 Fixed
Get rid of ConstructorFrameMap, drop CodegenContext#prepareFrame()

Also refactor FunctionGenerationStrategy to take FrameMap as an instance
instead of creating it in a subclass
Delete unreachable code in ImplementationBodyCodegen

Change superCall type to JetDelegatorToSuperCall
Drop CodegenBinding#enclosingClassDescriptor()