Throw in a little typechecker.

This still isn't a safe language because we don't check for definite
initialization of asm modifiables, and the operational semantics will
get stuck if asm variables aren't all written to.  It's
straightforward but tedious to enhance the typesystem to check
that (assuming jump have cbv semantics).