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 was thinking it would make more sense to take `authenticator` and `tenant_id` here and this internally takes care of whatever headers auth related stuff to do. This way auth knowledge stays here.