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 do prefer. But I agree that `OrElseUpdate` should desugar into something like this for vars :P