"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'll switch it to treq.request. I didn't know that function existed :)