Parse simple callable reference expressions

 #KT-1183 In Progress
Refactor GenerateFunctions

Extract some methods && constants, inline some useless methods, replace
PrintStream with PrintWriter, make some methods non-static
Generate KFunction/KMemberFunction/KExtensionFunction

 #KT-1183 In Progress
Minor refactoring in CallExpressionResolver

Kill useless parameters
Add CheckValueArgumentsMode to call resolver

Now it's ENABLED everywhere. DISABLED will be used for resolving callable
reference expressions, since there won't be any arguments near the function
call to check

 #KT-1183 In Progress
Resolve callable reference expressions

 #KT-1183 In Progress
Disallow references to extensions in classes

It's not clear in which order should the two receiver arguments be passed to
them, and there's no corresponding K*FunctionN class for now

 #KT-1183 In Progress
LHS of callable reference can't be a type parameter
Refactor ClosureCodegen

Extract some methods, replace types with more generic (ExpressionCodegen ->
LocalLookup), make more stuff fields instead of parameters passed to every
method, annotate with Nullable/NotNull
Minor refactoring in CodegenBinding

- CLASS_FOR_FUNCTION slice was used for two purposes: to record closure classes
  for functions and for scripts. Separate this slice into two slices:
  CLASS_FOR_FUNCTION and CLASS_FOR_SCRIPT
- add classNameForAnonymousClass() overloaded method to CodegenBinding, taking
  a function descriptor (not a PSI element)
Extract static helpers to FunctionTypesUtil

Also move 'getInternalClassName' method from CodegenUtil to FunctionTypesUtil,
since it's related to function types
Minor refactoring in ExpressionCodegen

Inline useless method, factor out resolveToCallableMethod logic from
resolveToCallable
invokeinterface FunctionN.invoke()

Instead of invokevirtual on FunctionImpl class, do invokeinterface on a
Function trait. This will allow to invoke functions on classes which don't
inherit from FunctionImpl classes.

Also rename the method to the more sensible name
Refactor ClosureCodegen

- make several commonly used parameters ClosureCodegen's fields
- take an arbitrary strategy for closure function body codegen
- don't make extra binding context lookups
Refactor method/constructor calls in codegen

- use ResolvedCall where possible
- 'call' parameter to invokeMethodWithArguments was used only to generate
  callee, e.g. in "A()" where A is an expression which can be invoke()'d.
  In case of constructors and enum entry delegation specifiers there's no need
  to generate callee, so 'call' is made Nullable with a subsequent assert
- remove generateJavaConstructorCall() method, since it did no useful work.
  Java constructor invocation is broken anyway and needs to be fixed (KT-3532)
- minor code style / formatting issues fixed, several methods renamed to better
  reflect semantics
Codegen for callable reference expressions

 #KT-1183 In Progress
Increase ABI version

Due to changes related to FunctionN now being interfaces, FunctionImplN
classes, KFunctionN, callable references
Minor refactoring in CodegenAnnotatingVisitor

Create a private helper method
Fix StackValue.coerce void to Object
Generate proper generic signature for closure classes