func (rb *RegretableReader) Regret() {
	if rb.overflow {
		panic("regretting after overflow makes no sense")
	}
	rb.r = 0
}
The next read from the RegretableReader will be as if the underlying reader
was never read (or from the last point forget is called).
package regretable
import (
	"io"
)
type RegretableReader struct {
	reader   io.Reader
	overflow bool
	r, w     int
	buf      []byte
}
var defaultBufferSize = 500
type RegretableReaderCloser struct {
	RegretableReader
	c      io.Closer
}
func (rbc *RegretableReaderCloser) Close() error {
	return rbc.c.Close()
}
func NewRegretableReaderCloser(rc io.ReadCloser) *RegretableReaderCloser {
	return &RegretableReaderCloser{*NewRegretableReader(rc), rc}
}
func NewRegretableReaderCloserSize(rc io.ReadCloser, size int) *RegretableReaderCloser {
	return &RegretableReaderCloser{*NewRegretableReaderSize(rc, size), rc}
}