Refactoring request & clients: a request is now standalone and immutable, can be re-used as many times as necessary, and essentially acts as its own client.
As an added bonus, it should now be easy to plug other HTTP frameworks in.
Added support for the "Accept-Encoding" header.
Simpler and more thorough tests of entity reading / writing.