Rewrite PropertyMetadata to Kotlin
Generate FunctionN and FunctionImplN classes in Kotlin
Rewrite built-in annotations to Kotlin
Rewrite progression iterators to Kotlin
Rewrite built-in primitive iterators to Kotlin
Generate Kotlin sources of ranges
Generate Kotlin sources of progressions

The check in DoubleProgression "if (increment == 0.0 || increment == -0.0)"
(and similar in FloatProgression) was simplified to "if (increment == 0.0)"
because 0.0 == -0.0 on JVM
Fix floating point number hash code in ranges

Don't make 0.0 and -0.0 have the same hash code: they are different in Java (in
the sense that "Double.valueOf(0.0).equals(Double.valueOf(-0.0))" is false),
and they are considered different already in DoubleRange.equals, which calls
Double.compare, which differentiates them
Rewrite Progression, Range, Unit to Kotlin

Delete useless (by now) AssertInvisibleInResolver
Move toString() from primitive ranges to Range

The same can't be done with progressions, because its toString() checks if an
increment is greater than zero, but Progression.increment is of type Number,
which is not Comparable<Int>
Create module 'builtins', move 'runtime' -> 'runtime.jvm'

'builtins' will be used for platform-independent core built-in definitions,
'runtime.jvm' for things that should be present at runtime in order for Kotlin
code to execute correctly on JVM

ProgressionUtil goes to 'builtins' right now because progression iterators
depend on it, but should be rewritten to Kotlin later
Generate Kotlin sources of progression iterators
Remove duplicated sources of built-ins

BuiltInsSerializer now serializes built-ins found in two source roots:
core/builtins/native and core/builtins/src

Add return types to some declarations in core/builtins/src, because now that
BuiltInsSerializer processes them, it launches lazy resolution which can't
always deduce the return type
Don't fail on annotated built-ins

Unit.VALUE is annotated right now (with "suppress"), so deserialization was
throwing an exception from AnnotationDeserializer.UNSUPPORTED. Return empty
collections of annotations instead; here we use the fact that it's the only
annotation in built-ins and its presence is useless to the type checker
Update test data after introduction of compilable built-ins

'next()' in primitive iterators is now final, as it always was in module
'runtime' before
Serialize built-ins on 'ant dist'

Don't store binary data in the repository anymore. From now on any test on the
compiler requires that 'ant dist' was executed at least once since the last
update of the built-ins
Compile built-ins in ForTestCompileRuntime

Remove references to "out/production/builtins", since those built-ins are
compiled by the bootstrap compiler, whereas we want to test built-ins compiled
by the new (working copy) compiler
Compile built-ins with the new compiler in build.xml

Instead of nested "withKotlin" element in javac2 which launches
bootstrap-compiler, we launch K2JVMCompiler from the newly built compiler
directly
Unmark source roots in 'builtins' and 'runtime.jvm'

This is needed because until we have modules and dependencies implemented in
our IDEA plugin, the whole project always is analyzed to highlight any file in
the project. This resulted in weird errors in different modules in Kotlin
project because two declarations were found for each built-in class: the one in
kotlin-runtime.jar and the one (totally unrelated) in the 'builtins' module
Fix built-ins reference resolve tests

Built-in sources are contained now in two directories: compiled and
non-compiled (native). kotlin-plugin.jar has them both under 'jet/', but for
tests we manually specify where to look for the former, as it was for the
latter in LightClassUtil.java.

Simplify code in JetReferenceUtil to have almost the same meaning as in
JetPsiReference.multiResolve()