Readd support for proxies from env vars

This is a regression when we upgraded to requests 1.x.
A proxy can be figured via the normal env vars used by
requests.  We now forward the `proxies` arg along
to the `send()` method of the request session.

Part of this change included refactoring the endpoint classes
to remove some duplication.  I've also added unit tests for
these changes.