handle reading in new chunks properly

use lex_peek_unichar, etc instead of manipulating PL_parser->bufptr
directly, to make sure we always have the next logical character in the
buffer. note that everything that is called during a call to parse_name
should have LEX_KEEP_PREVIOUS set, because parse_name relies on the
entire name being preserved in the buffer, so it can read it off at the
end.