Fix newlines in FunctionN generator

Use println() instead of print('\n')
Refactor GenerateTuplesAndFunctions

Introduce FunctionKind enum to store differences between functions and
extension functions (and possible future function-like classes)

Also remove some useless checks
Regenerate FunctionN and ExtensionFunctionN classes

GenerateTuplesAndFunctions now also generates Java classes in runtime/src/jet/
directory, and they have the matching declarations to those in
compiler/src/jet/

Delete ExtensionFunctionN's protected constructor, as it wasn't needed

Delete toString(), a more useful version will be implemented soon
Make FunctionN interfaces

FunctionN and ExtensionFunctionN are now interfaces, with the corresponding
implementations in FunctionImplN and ExtensionFunctionImplN

Update test data
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.

Also local declarations are now generated with public visibility (instead of
package local) since local function objects now implement FunctionN interface
and the implementation of the method 'invoke' should be public to match the
method in the interface.
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