fails:IO#ungetc pushes back one character onto stream
fails:IO#ungetc pushes back one character when invoked at the end of the stream
fails:IO#ungetc pushes back one character when invoked at the start of the stream
fails:IO#ungetc pushes back one character when invoked on empty stream
fails:IO#ungetc raises IOError when invoked on stream that was not yet read
