Fix and refactor ExpressionCodegen#pushClosureOnStack

- change Closure parameter to ClassDescriptor, load closure in the beginning
- invert and rename boolean parameter, also use it only to prevent pushing
  dispatch receiver (not the extension receiver) onto the stack because the
  only non-trivial usage of it is preceded by manual handling of the dispatch
  (not extension) receiver. This fixes innerOfLocalCaptureExtensionReceiver.kt
Don't put outer instance twice for anonymous object extending inner

 #KT-5343 In Progress
Pass correct outer instance in complex case of inheritance

 #KT-5343 Fixed
Uncomment previously failing code in J2K after fixing KT-5343
Add test for outdated smart cast with elvis issue

 #KT-5335 Obsolete