Remove peek/push_back/unexpect, add Parser::reset instead.
The new convention is that any parsing function returning `Err(())` may or may not have consumed any number of tokens from the input. Therefore, any the caller wishes to recover and try parsing something else, it should call `parser.reset(position)` where `position` is the result of `parser.position()` that was saved beforehand. The Parser::try helper does this for you by taking a closure returns Result, and resetting the position if the result is Err.