http: add agent.maxFreeSockets option
doc: http keepalive, agent options

Close #5839
http: provide access to raw headers/trailers

The format is [key,value,key,value,...] because that seems to have the
lowest overhead.

Close #4844
doc: http rawHeaders/rawTrailers
http: Write hex/base64 chunks properly

This removes a dubious performance "optimization" where strings body
chunks were concatenated to one another (and to the headers) without any
regard for their encoding.
http: Add write()/end() callbacks
http: make OutgoingMessage._flush inline-able
http: Consistent 'finish' event semantics

In other Writable streams, the 'finish' event means that all of the data
was written, and flushed to the underlying system.

The 'prefinish' event means that end() was called, and all of the data
was processed, but not necessarily completely flushed.

This change brings the http OutgoingMessage classes more in sync with
the other Writable classes throughout Node.

Unfortunately, this change highlights an issue with http
IncomingMessages, where the _dump() method will not actually pull the
data off the wire.  This is a minor issue that is typically only
relevant in test cases, and will be addressed in the next commit.
http: Simplify IncomingMessage._dump method
http: Prefer 'binary' over 'ascii'

It's faster, because it doesn't have to check that each char is in the
ASCII plane.
lib: remove unused variables and functions
buffer: remove unused parameters
cluster: variable is not global
test: Remove hard-coded port
crypto: don't mix new[] and free()

RandomBytes() allocated memory with new[] which was then handed off to
Buffer::Use() which eventually releases it again with free().

Mixing the two is technically a violation of the spec and besides, it's
generally frowned upon.
crypto: fix memory leak in randomBytes() error path