Rename ClassKind.isObject -> isSingleton

"isObject" gives a false impression that this is a check if the kind is OBJECT
Minor, NamedMembers.toString()
Delete ExpressionPosition

It had been deprecated in 838c408
Use StorageManager in AbstractClassDescriptor to create a lazy value
Pull up getClassObjectType()
Pull up getUnsubstitutedInnerClassesScope()
Cleanup ClassDescriptorImpl & ErrorClassDescriptor

ClassDescriptorImpl now extends ClassDescriptorBase and reuses most of its
functionality. ErrorClassDescriptor now is initialized in its own constructor.
Inline trivial arguments everywhere
Pull up getThisAsReceiverParameter()
Module annotations-ext removed. Annotations are moved to runtime
refactoring: record copy of resolved call explicitly
use constant BindingContext.EMPTY
instead of creating new BindingTraceContext
removed obsolete commented code
check Nothing type for all expressions not only for calls and simple names
(but excluding statement expressions)
made UNREACHABLE_CODE a warning instead of error
small: removed obsolete logic ('isIrrefutable')
KT-4204 ConstraintSystem erased after resolution completion
 #KT-4204 Fixed
made try, finally and throw expressions implement JetStatementExpression
Fixed exception from EA

"The constraint shouldn't contain different type variables on both sides: T <: R".
It occurred because we analyzed function literals before completion with unsubstituted (therefore wrong) expected type, and cached resulting type.
Fixed tests for labels.

The bug was automatically fixed by previous commit.
Fixed inference in a simple case.

Try number lower bounds before upper bounds when computing a value.