pure_http refinements and "bind_root"

This branch factors out the functionality of pure_http even further, dropping the "request" function, and splits the tests up into several suites. 

- The auth functions only need an *effect* that fetches auth headers or invalidates a cache, not a callable-of-no-arguments that returns an Effect, so the interface is simplified there
- renamed "reauth" to "invalidate" in a few places, to emphasize that the main behavior is about invalidation, while reauthenticating is just a secondary side-effect of that which occurs when another request happens.
- Add a new "bind_root" function, which returns a new request function where all requests are relative to the previously specified URL root.
- also updated to effect 0.1a7, which changes the signature of effect.twisted.perform (and also introduces some other useful functionality that will be necessary in future PRs).

Sadly the diff is bigger than it deserves, simply because a lot of code got slightly refactored, but really not much has changed.
I'd rather keep the general-purpose functionality in this module, because this is basically the proving grounds for a third-party effectful HTTP library that I'm working on, and I want to keep the general purpose stuff separate.

It's a good point that it doesn't do anything intrinsically related to auth, and it may be ok to rename it to something like add_headers_from_effect, but the name does give a pretty usefully strong hint about what it's actually for. Should add_auth_invalidation also be renamed? That one's even harder to find a name  for: "add_effect_on_http_codes"? I think I'll opt to leave the names as-is until further use cases for them are made clear.