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 wonder if this can return response only? There might be situations when response takes time and client is interested in response code only. How about another effect to get content from response?