Optimize out copying of buffer in eagerReader

Instead of supporting the generic io.Reader interface, support only
io.WriterTo and io.Closer.

Previous to this, copying memory was the biggest bottleneck not in
net/http.  Now, synchronization and newEagerReader is the bottleneck.