Nand2Tetris: Tokenizer & Parser mostly work
Nand2Tetris: Tokenizer & Parser mostly work

- doesn't yet parse array items properly (e.g. `x[i]`)
- use `traceback` to print stack traces instead of
  coding `unexpected_token()` to raise an exception
- rather than pop & pushing tokens on a token array,
  use an index to move back & forth, which means I don't
  need to track the old token when "retreating" (look-ahead).
- bug: `compile_while()` didn't refresh the token after
  `paren_expression_paren()`. Now it does.
- bug: `compile_term()` didn't always properly advance or
  retreat the token. Now it does.
- `paren_expression_{,list_}paren()` advances the current
  token, which is consistent with the other methods.

cunnie/bin,cunnie/bin,cunnie/bin,cunnie/bin,cunnie/bin,cunnie/bin,cunnie/bin