unique_ptrify MC
move switch opcode selection out of mc::Builder
update an error rule name
remove mc::InvalidInstruction
late-check label definitions
allow instruction insertion at arbitrary points
neaten insertInstruction a bit
add simple optimizers to MC

add three optimizers:

 * jump threading
 * unreachable code removal
 * code motion
     if a piece of code is jumped to from a jump instruction anywhere
     prior and that piece of code is preceded by a jump or a return,
     replace the jump with the entire block, keeping its label.
print MC label names as names, not comments