OuterClassInfo refactoring
New tests for outer class info
Fix visibility for main script function
Write outer class info for closures
Minor cleanup in FieldOwnerContext
Minor, fix parameter type in MemberCodegen
Merge ParentCodegenAware and ParentCodegenAwareImpl

Unextend ExpressionCodegen from ParentCodegenAware and make its
getParentCodegen() non-null. This fixes some nullability warnings related to
getParentCodegen()
Minor, reorder code in ExpressionCodegen
Simplify ClassFileFactory

Get rid of outdated assertions, mark createText() as TestOnly, add
NotNull/Nullable annotations.

Inline useless forClass/forTraitImpl/... methods, because this way it's simpler
and some code was already using newVisitor() anyway
Refactor PackageCodegen and ClassBuilderOnDemand

Make ClassBuilderOnDemand non-abstract and create its instance directly in
PackageCodegen's constructor
Remove heuristic from PackageCodegen

Implement the logic in a more straightforward way, move the heuristic to
JavaElementFinder where it was also used
Make ClassBuilderOnDemand extend ClassBuilder

Introduce DelegatingClassBuilder, refactor RemappingClassBuilder to use it
Create and store necessary codegens in MemberCodegen
Fix broken test data file