Implement all the needed glue to make twisted.web.Agent work well.

* Add support for performing HTTP requests over a SOCKS proxy endpoint