Kill statements in blocks that are unreachable, add tests for killing edges
This change only affects statements that we have yet to encounter after killing
an edge, while iterating through `IncrementalCompact`. Statements in dead
blocks that come before the point at which the edge is killed are killed in
`kill_edge!`, when the edge is killed.