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
FWIW, I have "solved" this in `rcv3-requests` by doing:

```python
class ServiceType(Values):
    """Constants representing Rackspace cloud services."""
    CLOUD_SERVERS = ValueConstant('cloudServersOpenStack')
    CLOUD_LOAD_BALANCERS = ValueConstant('cloudLoadBalancers')
    RACKCONNECT_V3 = ValueConstant('rackconnect')
```

I agree that taking service constants here would be better, even if right now it just moves the place where it takes a service name one call site further for now.

As for merging functions: maybe. I could see it either way. That it relies on a caching authenticator is indeed highly unfortunate. I use the binding feature in `rcv3-requests` (PR #736),  and it works fairly well. Taking a request fn that encapsulates e.g. an authenticator... is pretty nice. I wouldn't be able to do that, unless the caller passes me a partially applied version of this function. I guess that could work as well. I understand the separation of concerns @radix was going for, and I think it's mostly a good idea; it just has an ugly implementation wart :)