Read the next byte/code/char from the input without removing it. These
predicates do not modify the stream's position or end-of-file status.
These predicates require a buffered stream (see set_stream/2)
and raise a permission error if the stream is unbuffered or the buffer
is too small to hold the longest multi-byte sequence that might need to
be buffered.