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.
The common case by far for our own code is to want the response as well. I think if we want a request without the response, we could have an alternative effect interface that just returns the response. requiring every user to fetch the content specifically afterward would be pretty cumbersome I think