Minor, prettify code
Don't treat values of type "Unit?" to be always equal to Unit.VALUE

Two changes here: StackValue.Constant does cast iff value is non-null (if null,
no cast between classes is really needed, as null can be an instance of
anything), and codegen for safe qualified expressions uses correct type for the
expression

 #KT-4265 Fixed
Return Unit.VALUE if Unit or Any is expected

StackValue.coerce will do its job in casting void to Unit correctly

 #KT-4212 Fixed
Make anonymous class inner
Minor, don't do unnecessary mapType
Minor cleanup in FunctionGenerationStrategy and inheritors
Collect overridden descriptors for property accessors to LinkedHashSet
Unwrap fake override of original

This fixes a couple of verify errors related to the order of supertypes in the
class declaration