Use ServeContent instead of io.Copy

This automatically adds support for Range and If-Modified-Since request
headers.
Unlock faster at EndLife
Don't accept zero-length pastes
No need to lock/unlock before we start serving
Cache inferred Content-Types and return them

Also cache Etags while at it