(2 of 2) of the rest of the new bytecode emitter

This PR completes the new bytecode emitter, including building and writing class files in parallel, by building upon https://github.com/scala/scala/pull/2863

Before writing class files, a modicum of code tightening transformations are necessary: unreachable code elimination, which in turn calls for cleanup of labels and exception entries made redundant by unreachable code elimination.

In this PR, each such transformation is introduced in a commit with tests for the transformation in isolation. Another commit also in this PR tests each such transformation in connection with the bytecode emitter.

I'll suggest a reviewer once tests pass, comments and reviews welcome.