Remove `http`, and make `buildRequest` pure.

The commit messages explain.  Apart from what I say in there, I think it makes much more sense to set the method and host once, at the beginning.

There are various alternatives:

* Make `http` look at the existing headers and decide the `Content-Encoding` based on those, but imo that's much uglier, because in situations like the one I describe I need to wrap the user request in two `http`s.

* Make `http` only change the method and host, add a function to set the `EntityBody`, and then write the right header in the `buildRequest`.

I understand that they are breaking changes, but I think it's better to break things now that the library is still young...