Work toward side-by-side translation data.

This commit adds start_pos and end_pos to every successfully parsed Rule.
These values are also stored alongside every code string, and both lists are
available at the end of a full file parse by looking at run.code_list (a list of
strings) and run.state_list (a list of dicts with keys 'start' and 'end').

In the future, I could consider storing more info in the state dicts.