src: add MakeCallback() that takes an array index

Internal helper function for dispatching by array index rather than
named property.
timers: dispatch ontimeout callback by array index

Achieve a minor speed-up by looking up the timeout callback on the timer
object by using an array index rather than a named property.

Gives a performance boost of about 1% on the misc/timers benchmarks.
node: remove duplicate infoBox checks

These checks are now done in C++ and don't need to also be checked in
JS. Also remove a couple unused variables.
test: update tests after internal api change

Commit 0aa1335 changes the way timeout events are dispatched. Update
two tests that still used the old way.
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