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 unnecessary mapType
Minor cleanup in FunctionGenerationStrategy and inheritors