Service-bound HTTP requests

This introduces an abstraction for "service-bound request functions", which allow you to perform HTTP requests without knowledge of the tenant, name of the endpoint in the config file, region, or authentication.

It's based on the pure-http-refinements branch, so to see only the changes this branch makes, see here: https://github.com/rackerlabs/otter/compare/pure-http-refinements...service-bound-http
This is a style issue, so up for debate, but I'm not a huge fan of the dangling close paren. Suggestion: extra grouping parens:

```python
return (request_with_auth(
    request_with_headers,
    auth_headers,
    invalidate,
    headers=headers,
    reauth_codes=reauth_codes)
        .on(partial(check_status, success_codes))
        .on(lambda result: result[1])
        .on(json.loads))
```