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'm intending otter.utils.pure_http to be non-Otterish code, i.e. with no dependency on any other otter-specific objects like authenticators. The part that glues pure_http to otter is in otter.http in the dependent branch.