Don't log stack trace for warning

These stack traces are confusing and create a feeling that an exception was
thrown
Extract DescriptorUtils.getContainingModule()
Pass module to GenerationState

- get rid of a hack there which was used to obtain any module, to be used in
  ReflectionTypes
- delete unused getError() in LightClassConstructionContext which was always
  null
- fix some minor warnings
Use module instead of KotlinBuiltIns in ReflectionTypes
Introduce module 'reflection', move KFunctionN to it

Metadata for KFunction classes is now longer serialized along with built-in
classes. This effectively means that it's no longer possible to find KFunction
classes via dependency on built-ins. There should be a kotlin-runtime library
in the specified classpath for reflection types to be resolvable.

A lot of tests were moved and changed, because tests on callable references
require stdlib in classpath from now on
Don't compile Java sources of built-ins

Module 'builtins' no longer has (and is not supposed to have) Java sources
Move KFunctionN classes to package "kotlin.reflect"
Add default import "kotlin.reflect"
Create error type if reflection class isn't found

Introduce a new diagnostic fired when reflection types aren't found in the
classpath
Introduce FunctionImpl and ExtensionFunctionImpl classes

Old FunctionImpl0,1,2,... will be dropped since they had no purpose
Drop FunctionImplN and ExtensionFunctionImplN

We have FunctionImpl and ExtensionFunctionImpl classes now (2 classes, not 46)
Fix generic signature for SAM adapters and constructors

SAM-related code in codegen was using JavaClassDescriptor directly, which has
an erased signature. Create and use a new abstraction SamType which has a full
generic signature of a type which was used in the SAM construct
Move and rename KFunctionImpl classes

Move from package "kotlin.reflect" to "kotlin.reflect.jvm.internal". They are
internal detail of the compiler and should not be used directly (especially now
that "kotlin.reflect" is in default import paths).

Also rename "KFunctionImplN" to "KFunctionNImpl", because this name makes more
sense
Change logic of loading "suppress" annotation class descriptor

Instead of loading the descriptor and checking equals(), we now check if the
annotation is in fact "suppress" by simply comparing its FQ name. This allows
us to suppress warnings while compiling built-ins: the problem is that
built-ins have its own "suppress" annotation class (defined in the sources)
which differs from the one loaded by the compiler (from kotlin-compiler.jar)
Minor optimization in KotlinBuiltIns.isSpecialClassWithNoSupertypes
Remove suspicious JetTypeImpl constructors

Most of the time they were used for classes without type parameters, and
getDefaultType() is supposed to be used there (additionally it may be cached)
Introduce AbstractTypeParameterDescriptor

- pull the logic up from TypeParameterDescriptorImpl and
  AbstractLazyTypeParameterDescriptor (it was mostly duplicated)
- delete some unused methods
Replace some usages of ERROR_CLASS with new instance creation

Because when some class is unresolved, we can still hold some information such
as its FQ name, for debugging purposes and better error messages
Introduce KFunctionImpl, KMemberFunctionImpl, KExtensionFunctionImpl

Old 23*3 classes will be dropped, since they have no value.

Simplify JvmFunctionImplTypes significantly because of that
Delete K*FunctionNImpl classes

In favor of KFunctionImpl, KMemberFunctionImpl and KExtensionFunctionImpl