DO NOT MERGE Incremental inliner

**Do not merge this PR yet**, it is obviously in a very rough state.

But now the algorithm should be complete enough that things won't change much anymore, except cleanups. So I'm posting it for the eager interested reader.
Why do we need this? The only location it is used is when emitting optimized method/traitImpl defs. These don't use anything but the name of the `ClassDef`...