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
What do you think about merging this with above function that takes `service_name` and `region` also as parameters? This way this function doesn't need to be aware of caching. Also, the function can be named `get_authenticated_request_func`. Up to you :)

Also, I would really like to take `service` as `NamedConstant`:
```python
class Services:
   NOVA = NamedConstant()
   CLB = NamedConstant()
   RCV3 = NamedConstant()
```
This way the caller doesn't need to know about service names which it takes from global config (argh!). This function internally knows about which service, env and how to get it from service catalog. That knowledge is not spread anywhere else.