func WrapWriter(w http.ResponseWriter) WriterProxy {
	_, cn := w.(http.CloseNotifier)
	_, fl := w.(http.Flusher)
	_, hj := w.(http.Hijacker)
	_, rf := w.(io.ReaderFrom)
	bw := basicWriter{ResponseWriter: w}
	if cn && fl && hj && rf {
		return &fancyWriter{bw}
	}
	return &bw
}
WrapWriter wraps an http.ResponseWriter, returning a proxy that allows you to
hook into various parts of the response process.
package mutil
import (
	"bufio"
	"io"
	"net"
	"net/http"
)
type WriterProxy interface {
	http.ResponseWriter
	Status() int
	BytesWritten() int
	Tee(io.Writer)
	Unwrap() http.ResponseWriter
}