client: add function NewClientFromConn

This is a huge commit because of the giant refactor and change in the
behaviour here: now the client will always dial to the remote server and
invoke httputil.ClientConn.Do. When the NewClientFromConn is called, the
dial step is skipped. This had a huge impact in the tests, because now
we need an actual HTTP server, so we can dial to it.

I've also fixed the error handling of httputil.ErrPersistEOF. This error
means that the client should not send another request, but the current
request has been successfully processed by the server.

Closes #123.