(3 of 2) of the rest of the new bytecode emitter (yes, this PR is Part 3 of 2)

Supersedes https://github.com/scala/scala/pull/2889 and incorporates feedback from there.

This PR completes the new bytecode emitter, including building and writing class files in parallel, by building upon #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.