Change logic of serialization of primary constructors

"Callable primary_constructor" field will be dropped, because it requires
serializer to serialize the fact that a class has a primary constructor.
Default primary constructors for objects etc. shouldn't be serialized, because
they can be re-created trivially when they're loaded, so there are three
options: a class doesn't have a primary constructor, a class has a default
primary constructor, a class has a custom primary constructor.  This explains
the change in descriptors.proto
(TODO squash with previous) Don't serialize default primary constructors
BodiesResolveContext.getClasses()'s key is JetClassOrObject

This has no effect right now, but is a preparation for the objects refactoring,
when BodiesResolveContext.getObjects() will be dropped
Treat anonymous objects as classes (ClassKind.CLASS)

They're not objects per se, i.e. they're not singletons
Change object resolution strategy in TypeHierarchyResolver

Instead of creating a synthetic property descriptor for objects, create a
synthetic class object in it and make it inherit from the object. This way all
of object's members will be accessible via its class object
Drop BodiesResolveContext.getObjects()

Objects are stored in the same place where classes are
Support updated object hierarchy in JVM codegen
Change object resolution strategy in lazy resolve
Change object deserialization strategy

Objects now have synthetic class objects in deserialization as well. "Class"
proto message now can have a synthetic class object proto within, if it's not
contained in any external class file, which is the case with objects.
"class_object_present" boolean field is deprecated and will be dropped, since
its value is equivalent to the presence of "class_object" field
(TODO squash with previous) Drop "class_object_present" field from binary format

Its value is equivalent to the presence of "class_object" field
Resolve enum entries similar to objects in TypeHierarchyResolver
Drop NamespaceLikeBuilder.addObjectDescriptor
Update enum entry resolution strategy in lazy resolve
Change local objects resolution, delete LocalVariableDescriptorForObject

Local objects are now resolved as global ones (with derived class objects)
Support updated enum entry hierarchy in JVM codegen
Fix AnnotationDescriptorResolveTest, objects are now classes in scopes
Change enum entry resolution strategy in JDR

Enum entry is now resolved into a class with a class object, which inherits
from the former class, as in the other parts of the compiler. Create a special
class EnumEntrySyntheticClassDescriptor which will be reused in deserialization
later
EnumValue now has a ClassDescriptor for its enum entry
Enum entries are put into enum class, not its class object
Put enum entries into enum class in JDR