Socks5 support

This is a replacement for #648 and fixes #141.

The patch adds [mattcg/socks5-http-client](https://github.com/mattcg/socks5-http-client) and [mattcg/socks5-https-client](https://github.com/mattcg/socks5-https-client) as dependencies so that request can use the agent objects from both to support SOCKS proxying.

A test is included. To run it you should have a SOCKS5 server running on localhost:1080. Use the following command to start one if you have sshd running locally:

`ssh -N -D 0.0.0.0:1080 localhost`