Regenerate tests
Fix StackOverflowError on cyclic hierarchy Java<->Kotlin

Report errors not only when superclasses are MutableClassDescriptorLite, but
any classes

 #KT-2115 Fixed
Consider outer classes when topsorting hierarchy

- when building a topsorted hierarchy, consider not only edges to the class'
  superclasses, but also from inner/nested classes to their container. This
  effectively means that a class cannot inherit from its nested class. Similar
  cases (see the tests) are disallowed in Java.
- filter classes by their presence in TopDownAnalysisContext, not by being a
  MutableClassDescriptor (otherwise analysis for local classes ends up trying
  to do something with outer superclasses)
- delete outdated comment: topsort is needed not only for better diagnostics,
  but also for correct order of fake overrides construction
Drop MutableClassDescriptorLite

Inline it into MutableClassDescriptor
Minor, add assertion message
Simplify codegen for trait methods with implementations

- use existing framework (FunctionCodegen.generateMethod) which will take care
  of all subtleties of method generation (bridges, annotations, thrown
  exceptions, etc)
- call to "generateThisOrOuter" was not needed, since when we're generating
  delegation to TImpl, "this" is always "ALOAD 0"
Minor, move and rename getExceptions

Should only be used in FunctionCodegen from now on, because every method
generation should go through FunctionCodegen
Refactor bridges algorithm in codegen

- fix a typo (which apparently didn't matter)
- queue now always contains originals, no need to invoke getOriginal()
- no need to add current descriptor's original anymore, this was a hack working
  around a problem with trait-impl which was fixed by another change
- a small optimization: don't do anything for constructors
Generate bridges for fake overrides when needed

 #KT-3985 Fixed
 #KT-4145 Fixed
(TODO test) declaration -> !fake_override
Rewrite bridge generation to Kotlin, make it abstract