"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 know about it, but it's factored differently. for one, that function uses treq.content, which has side-effects. this is why the Request intent results in a two-tuple of the response object and the content, so the response processing has access to everything.