(TODO svtk) Synthetic class object of enum should always be public

TODO: fix visibility check for class objects

 #KT-2834 Fixed
(TODO svtk) LHS of qualified expressions are determined manually

ExpressionPosition is useless now and will be dropped

 #KT-3866 Fixed
(TODO svtk) Resolve extension calls on class objects

 #KT-3470 Fixed
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
Temporary changes in Java enum entries loading

Property descriptors are still created for each enum entry, and corresponding
objects don't really have a useful class object, but it's a start to get stdlib
compiled and lots of tests pass (JDR will be thrown away anyway soon)