Replace result with a custom ParseResult, remove broken error position
Thread a ParseState struct through all matching functions
Add explicit lifetime for input string.

Lifetime elision rule no longer applies with the new &mut ParseState
parameter on parse functions.
Track max error pos for better error location, report expected chars.
Merge pull request #21 from kevinmehall/errpos

Improve error handling