Fix test longjmp throw asm3

This fixes #2069.  The original issue surfaced as a `case` statement whose `break` was not properly detected, causing the `buildFlowGraph` function to choke.  So the first 4 commits here let us do a much better job of detecting when control-flow does not reach a junction.  (So much so that it started removing the final `return` statement as dead code, and I had to add that back in explicitly).

Unfortunately, it seems that other parts of the test suite generate `case` statements that actually do not `break` at all, relying instead on the flow-through semantics of sequential `case` statements.  So I've added logic to deal with this, but kept the improvements developed while solving the original bug.

`asm3` and `other` tests run successfully for me.