A parser is a function from a State to a ParseResult.
The T type is the type of the value produced by the parser, the E is the
type of the errors it can produce. F is the type of failure - this is like
an error, but made to be used for backtracking. It is optional.
The 'a lifetime is the lifetime of the parser.
A position in some source code string.
Positions save the offset, the row and the column. That means that a
position is only valid for a specific source code string.