[WIP] fix bug #245

@ljorr1 exposed a bug in the dead code elimination w.r.t. DoWhile loops. I've added two tests, but have not yet been able to work on the underlying issues.

@7andrew7 if you have a sec to look at this, alone or joint with me, would appreciate it!
@7andrew7 the bug is here, as indicated by the `assert`s I added above. If we multiple two loops, the assumption that the "skip the loop" edge should go from `begin-1` to `end+1` can be false.