Rename `nextPreview` and `prevPreview` to `nextCharacter` and `prevCharacter`
respectively so that these function names reflect the purpose of these functions.
This commit entirely removes the global state from `parse`.
The state is passed as an object to each function, functions modify the state passed to them.
Combines most of the global state used when passing expressions into an object called `state`.
This makes it easier to refactor this code going forward and clarifies which functions touch the global state.
`tokenStates` is still a seperate global variable which now contains copies of the state.