Move 8bit<->7bit logic to a separate class
Move JavaProtoBufUtil utilities to where they're used

Serialization goes to backend: it's not needed in runtime, at least in the
state in which it is now (dependent on ASM).

Deserialization goes to AnnotationDescriptorDeserializer. Inline some methods,
remove unneeded abstractions.

This removes dependency of serialization.java on ASM
Remove dependency of annotation deserializer on ASM Type
Minor refactorings in KotlinClassFileHeader
Remove KotlinClassFileHeader.HeaderType.NONE

Use null instead
Make KotlinClassFileHeader immutable, make its inner class nested
KotlinClassFileHeader is now nullable everywhere

'null' means there's no header. This makes all of KotlinClassFileHeader's
fields non-null
Simplify logic in KotlinClassFileHeader

When processing annotations, we should ensure not only that we have no more
than one KotlinClass/KotlinPackage annotation, but any supported header type at
all. Also instead of throwing an exception it's safer to just log the error
Move KotlinClassFileHeader to header/ package
Refactor KotlinClassFileHeader

Split into two subclasses: KotlinClass/KotlinPackage-annotated classes and
JetClass/JetPackage-annotated classes
Move nested class to top-level
Write KotlinPackageFragment annotation to package$src classes
Delete unused method from VirtualFileFinder
Move Kotlin descriptor loading to kotlin/ package
Move ClassSerializationUtil to 'compiler-tests' module

It's not used in 'serialization'
Regenerate ProtoBuf files
Serialize FQ names of Kotlin classes

This helps to avoid a nasty hack with loading inner Kotlin classes in JDR,
which makes it a bit easier to 'lazify' JDR, since now the container of a
Kotlin class is no longer required to be resolved eagerly before resolution of
the class itself
Minor refactoring in DeserializedClassDescriptor
Add 'topLevelMemberInvocation.twoModules' test to CompileBinaryTestData