preventing unnecessary heap retention due to auxiliary constructors

Previously, upon finding
  - usages of the (direct) outer-instance
  - inside an auxiliary constructor of an inner class C
the conditions for the JumpOverOuters optimization wouldn't be fulfilled
and an outer-field for that outer-instance left in place.

That form of heap retentation is in fact not necessary
(inside an auxiliary constructors, just like in the primary constructor,
the direct-outer-value is available as outer-param).

This commit generalizes the JumpOverOuters optimization in
the constructors phase to also skip the (direct) outer-field
in the case just described, caching instead the nearmost
outer-instance that's actually needed.