Compile kotlin-runtime-minimal.jar, run proguard against it

ProGuard complains if we're trying to shrink compiler with the full runtime in
dependencies because for the compiler produced on the first step of bootstrap
these two jars contain conflicting classes. This won't matter in the final
distribution because we will strip 'core' modules from compiler.jar. But this
matters in the first step because core will be different in the compiler (used
to load compiled class files) and in the reflection (used to introspect symbols
at runtime).

kotlin-runtime-minimal.jar still contains the complete reflection API and some
stub implementations in module 'reflection.stub.jvm', but doesn't have core, so
it won't cause a proguard error
Rework bootstrapping compiler with runtime in build.xml

Do not pack the runtime into the compiler on the first step of bootstrap, but
rather leave it as a separate file named kotlin-runtime-internal-bootstrap.jar.

This new solution will allow compiler to use its own classes from "core", not
the ones used by the runtime it depends on
Refactor CompilerRunnerUtil

Eliminate code duplication, add NotNull, make everything private, etc
Move ParentLastURLClassLoader from gradle plugin to compiler
Use parent-last class loader in IDE compiler runner

To be able to invoke the intermediate compiler built on the first step of
bootstrap: in contrast to the distributed compiler, it's incompatible with the
runtime produced by itself and should instead be run with the runtime in the
classpath which was used to compile it
Minor, rename module to conform to naming style
Include different runtime into plugin for bootstrap build
Rename Maven library kotlin-runtime -> kotlin-builtins

Also replace accidental usages of former kotlin-runtime with kotlin-stdlib
Split loadKotlin test data into two chunks

The majority of the tests stays in "compiledKotlin", while tests that use
annotations not retained at runtime go under "compiledKotlinCompilerOnly",
which will not be used as a root for generated descriptor loading tests at
runtime with reflection (as opposed to "compiledKotlin")
Test generator: allow to exclude certain test data directories
Initial support of descriptor loading at runtime
Initial support of annotation loading at runtime

In order to locate an annotated entity, we need to implement almost the whole
Java element model (which will be used anyway for Java descriptor loading)

Nested annotations are not supported at the moment. Also the order of loaded
annotations seems to be instable
Support Java symbols in runtime descriptor loading
Delete dependency of 'serialization' on trove4j

Use HashMap of wrapped objects instead of THashMap with custom hashing strategy
Prettify code in 'reflection.jvm'

Use stdlib instead of hand-written hacks, fix some warnings and unneeded !!
Include core into kotlin-runtime.jar
Add kotlin-runtime Maven artifact

Contains kotlin-stdlib and reflection implementation for JVM
Use abstract factory for reflection objects on JVM

Introduce an abstract factory class ReflectionFactory which is responsible for creating
reflection objects (KClass, KProperty, ...). The meaningful implementation is
located in "reflection.jvm" where KClassImpl/KPropertyImpl/... are accessible
and can be instantiated. The default implementation will be used in the lite
runtime with no reflection and will return nulls / throw exceptions there.

Put all functions, calls to which are generated by JVM back-end, in one place:
the class named Reflection which contains only static methods. Previously these
functions were scattered across different files in module "reflection.jvm".

The code using reflection may now be compiled against either runtime, but
reflection features will work if and only if reflection is accessible at
runtime
Drop unneeded factory methods

Either ReflectionFactory or direct creation is now used instead