/*
 * call-seq:
 *    ungets(str)
 *
 * Equivalently "unget" a string. When called on a string that was just read
 * from the stream, this inserts the string back into the stream to br read
 * again.
 *
 * When called with a string which hasn't been read from the stream, it does
 * the same thing, and the next read line/data will start from the beginning
 * of the given data and the continue on with the rest of the stream.
 *
 *    reader = Bzip2::Reader.new Bzip2.compress("a\nb")
 *    reader.gets           # => "a\n"
 *    reader.ungets "a\n"   # => nil
 *    reader.gets           # => "a\n"
 *    reader.ungets "foo"   # => nil
 *    reader.gets           # => "foob"
 *
 * @param [String] str the string to insert back into the stream
 * @return [nil] always
 */
static VALUE bz_reader_ungets(VALUE obj, VALUE a) {