advance

Returns a new ParserInput advanced by one position, sharing the same input list and userContext.

Does not check bounds — call only after confirming isAtEnd is false.