Pure HTTP client, based on effect

This was extracted from my heat-reauth branch.

It adds a new HTTP client function, otter.util.pure_http.request, which returns an Effect and has a lot of built-in convenience.
I don't know how you feel about @inlineCallbacks these days, but return response, yield self.treq.content(response) doesn't look the worst. Maybe it's just getting too late here :)