Use FunctionImplN instead of FunctionN in codegen

Superclass of closures should now be FunctionImplN instead of FunctionN. Since
these -Impl classes are needed only in JVM, the corresponding descriptors and
types are created in the back-end only.
Write generic signature for closure FunctionN superclass

ClosureCodegen.appendType() now appends any Type as a type parameter correctly
toString() for FunctionN classes

It's implemented as if the types were reified: getting the real type parameters
of the corresponding FunctionN class
Delete unused method

It was only used in parsing tuples, which are dropped
Introduce JetCallableReferenceExpression

Reuse the obsolete hash qualified expression as a newly born callable reference
expression: Foo::bar. It's not a qualified expression anymore, since the
receiver part is now a JetTypeReference and it also can be empty ("::bar")
Add new token COLONCOLON (::) for callable reference
Parse simple callable reference expressions

 #KT-1183 In Progress
Refactor GenerateFunctions

Extract some methods && constants, inline some useless methods, replace
PrintStream with PrintWriter
Refactor GenerateFunctions

Make methods non-static
Generate KFunction/KMemberFunction/KExtensionFunction
Minor refactoring in CallExpressionResolver

Kill useless parameters
Resolve callable reference expressions

 #KT-1183 In Progress
1