func (p *Bytes) Put(c []byte) {
	select {
	case p.pool <- c:
	default:
	}
}
Put returns a slice back to the pool.  If the pool is full, the byte
slice is discarded.
package pool
type Bytes struct {
	pool chan []byte
}
func NewBytes(max int) *Bytes {
	return &Bytes{
		pool: make(chan []byte, max),
	}
}
func (p *Bytes) Get(sz int) []byte {
	var c []byte
	select {
	case c = <-p.pool:
	default:
		return make([]byte, sz)
	}
	if cap(c) < sz {
		return make([]byte, sz)
	}
	return c[:sz]
}