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.
`request` is not documented here. So, I assume it is function that takes method, url and other args. But by looking `auth_request` it seems to be expecting only `headers`? Also, I feel it might be easier to grasp this function if `auth_request` was inside this function. I am trying to think what purpose it serves individually.