Two fixes to handling of invariant edges:

* Always check edge liveness within child loops, as a positive decision as an invariant could be overruled by killing the predecessor blocks in every iteration.
* Always check edge liveness in parent scopes even if its scope suggests you should check child loops, due to the opposite situation: invariant killing overruling the child loops.
Always mark loop exit edges dead, even if they're usually invariants
Add support for open() drawing on variable filename