the rest of the new bytecode emitter

Building upon the barebones bytecode emitter of https://github.com/scala/scala/pull/2620 , this PR adds features that GenASM supports and were missing so far in GenBCode, as well as net improvements over GenASM. In detail:
- only the main thread talks to typer, ASM-only operations are off-loaded to worker threads
- dead-code elimination and jump-chains collapsing are performed (btw, these rewritings are examples of ASM-level-only rewritings and don't require typer).

With the above, the capability gap with GenASM is closed. As a bonus, GenBCode doesn't exhibit bugs that GenASM still suffers from (see included tests for details).

review by @gkossakowski