Incrementally parses as much input as possible, and returns
another Parser that represents the continuation of how to parse
additional Input. If input enters the done state,
feedmust return a terminated Parser, i.e. a
Parser in the done state, or in the error state.
The given input is only guaranteed to be valid for the duration of
the method call; references to input must not be stored.