Refactor: use constants instead of string literals
Split KotlinInfo annotation into two: KotlinClass and KotlinPackage

Two annotations are needed to properly distinguish package classes
Minor refactoring in codegen

Replace String by JvmClassName where possible in OwnerKind, ClassFileFactory,
NamespaceCodegen, add NotNull annotations, some minor renames, etc.
Deserialize annotations from package$src files if needed

For top-level members, we now write a FQ name of the package$src class which
has the member's annotations, and read the correct file in deserialization
Move Intrinsic annotation to javaClass property from its getter

This is needed because the property, not its getter, is used as a key to the
intrinsics map when codegen decides how to generate a method call. Earlier it
worked because annotations on getters of properties loaded from bytecode were
mistakenly added to annotations on properties themselves
Change .kotlin_class_names format a little

Before writing a list of indexes of built-in classes' names, write the length
of such a list. It helps to read this list normally (not until an exception
happens)
DescriptorFinder now can find class names in a package

This helps to get rid of "repeated class_name" field in Package protobuf
message. DescriptorFinder in resolve.java uses PSI to find all classes in a
package, and the finder for built-ins just reads .kotlin_class_names file
Minor, deserialized package scope is now not abstract
Minor, delete SerializerProvider
Minor, make callback method empty, not abstract
Minor, make descriptor available to NamespaceCodegen
Serialize packages via descriptors in codegen

Disable KotlinPackage annotation for scripts, otherwise script analyzer tries
to add descriptors to a locked scope
Don't test annotations in DescriptorSerializationTest
Refactor AbstractDescriptorSerializationTest

Serialize/deserialize package members via PackageData and
DescriptorSerializer.packageProto(), delete useless code
(JavaDescriptorFinder), extract some methods, etc.
Write ProtoBuf.Package to .kotlin_package

Instead of a delimited list of callables. Also some minor refactorings
Minor, move anonymous class to private inner
Minor, don't test DescriptorFinder logic in KotlinClass test

LoadCompiledKotlin and DescriptorSerialization tests should cover this.
KotlinClassAnnotationTest should only test that the correct annotation is
written