Set the host directly in `buildRequest`.

The `http` function is very inconvenient because it does both
things that can be overwritten and things that can't.

Specifically, setting the method and path cannot be overwritten
by any other function, but the Content-{Encoding,Length} can.

This is annoying: consider the situation where I want to change
the host of a function but not the encoding/length.  I can try

    massageRequest :: RequestBuilder a -> RequestBuilder a
    massageRequest q = http PUT "/whatever" >> q

but `req` might override my method/host using `http`.  If I try

    massageRequest :: RequestBuilder a -> RequestBuilder ()
    massageRequest q = q >> http PUT "/whatever"

I'm going to overwrite the `Content-Encoding` setting it to
`Chunked`, but keep the `Content-Length` (which is now useless),
thereby making the request chunked.

So the only safe way of doing the above is by building the request:

    massageRequest :: RequestBuilder a -> Request
    massageRequest q = do
      req <- buildRequest (http PUT "/whatever" >> q)
      req{qMethod = mth1, qPath = pth1}
`buildRequest` doesn't need to live in IO.