Make the HTTP client more generic.

This way we can send other headers and use HEAD requests.
Fix Take() methods.
Handle commonly mixed-case headers better.

Sometimes you'll see Content-length, etc.
Actually use httpVersion_ and userAgent_.
Migrate POST to use HTTP/1.1, etc.
Merge pull request #242 from unknownbrackets/http-interface

Make the HTTP client more generic