.times() fails w/err msg from branch that got furthest

interestingly, .times() actually got simpler: instead of different
`firstFailure` and `secondFailure` continuations (depending on whether
we're repeating the `self` parser less than the minimum or maximum
number of times, respectively), since we're now keeping the failure
continuation variable `furthestFailedI` separate from the success
continuation variable `i`. Which we could've done in the first place,
but `{first,second}Failure` seemed more natural.