Fix getting built-in classes in frontend.java

getKotlinBuiltinClassDescriptor() worked only for classes in jet.* package and
was failing for classes like jet.Map.Entry, jet.MutableMap.MutableEntry
Implement getNamespace() for deserialized scope

DescriptorFinder now can find packages, pull the method up from
AbstractDescriptorFinder class
Don't load Java's "FooPackage" class as a Kotlin package

Before creating a Kotlin package scope for a classfile, first check if it
contains KotlinInfo annotation
Fix arguments of annotations on lazy classes
Minor, rename method

'resolveAnnotations' gives a false impression that this method will resolve
annotations with their arguments, which it does not
Store ABI version along with serialized descriptors

KotlinInfo annotation now has a version() field, which should be equal to the
compiler's JvmAbi.VERSION in order for this class to properly load and be used.

Create ErrorReporter class, which has a trace to which it can report errors
(now only related to ABI version). This is done because a dependency of
DeserializedDescriptorResolver from BindingTrace would be confusing.
Implementation of ErrorReporter will probably need to change when we untie
deserialization from java-resolve.

Check if PsiClass is actually a compiled class before trying to load serialized
data from it: otherwise it can be a Java source, as was in wrongAbiVersion()
test, and ASM will fail when trying to read that file. Rewrite the test so that
it now has a compiled Kotlin classes to check against (also include sources to
recompile this binary data later, although it won't probably be needed)
Refactor AbstractDescriptorSerializationTest

Use existing utility functions, replace ClassMetadata -> ClassData, add
annotations, etc.
Write java signature of serialized descriptors efficiently

Instead of storing a string with the signature, write the name, return type and
parameter types separately, reusing the name table. Refactor the name table to
allow it to store not only names of Kotlin entities, but also arbitrary names
and fq-names
Deserialize annotations on property accessors
Create empty method for annotated properties w/o fields

There was no place in bytecode where annotations on properties without backing
fields could be stored to. Now they're written on a synthetic empty void method
with a special name ("propertyName$annotations").

(Annotations on properties cannot simply be written on getters in bytecode,
since a getter can have annotations of its own.)
Deserialize annotations on class properties w/o fields

Annotations on properties without backing fields are stored on a special
synthesized method inside the class