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.
I mean: `newInterfaces.size == oldInterfaces.size && newInterfaces.size == existingInterfaces.size`