"heat reauth", with general-purpose 401-handling pure HTTP client

So, this is a big branch, and is probably still pretty rough.

NEW STUFF:

- pure_http, a new library for purely functional HTTP requests
- heat_client uses pure_http
- some testing utilities

This branch adds a dependency on the "effect" library. It currently uses *unreleased* features of that library, I'll do another release of effect today to get everything in sync.

It also adds a dependency on "characteristic".

It also has manish's IsBoundWith branch merged in, so the diff currently shows that code.


NOTE: right now there isn't actually a reauthenticating function *implemented*, just the framework for invoking it to get the new token, and then using that new token. 
I like the above functions each of them adding a composable functionality over `Request`. However, I feel the base `request` method be basic and one should be able to compose more functionality over it using either `wrappers` or something like `compose_request` method. I am not sure which is the best way. Hope I've communicated the idea clearly :)