Create an extension point to DescriptorSerializer

Extract the existing predicate logic into it
Simplify class serialization in codegen
Deserialize annotations on class members

Make 'Callable' message of descriptors.proto extensible, extend it in
java_descriptors.proto with a JVM signature of the member. This is needed in
order for annotation deserializer to find out which member in the compiled
bytecode corresponds to which descriptor in the hierarchy.

Create a new module 'serialization.java' containing everything related to
Java-specific serialization of descriptors.

Add an extension point to DescriptorSerializer, allowing to perform
platform-specific serialization on a callable
Deserialize annotations on package members
Minor, move byte arrays logic to ClassData/PackageData
KotlinInfo data parameter is now String[]

This is done because byte arrays in annotation arguments cannot be longer than
65535 bytes, and serialized data's length for kotlin.KotlinPackage class from
stdlib is already close to this number
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