http: Don't try to destroy nonexistent sockets

Fixes #3740

In the case of pipelined requests, you can have a situation where
the socket gets destroyed via one req/res object, but then trying
to destroy *another* req/res on the same socket will cause it to
call undefined.destroy(), since it was already removed from that
message.

Add a guard to OutgoingMessage.destroy and IncomingMessage.destroy
to prevent this error.
install: Support $(PREFIX) install target directory prefix

This change introduces support for the common PREFIX variable in the
Makefile and install.py, instead of having /usr/local hardcoded. This
makes it much easier to install node to custom locations e.g. in a
user's home directory.

The PREFIX variable defaults to /usr/local.
build: Makefile should respect configure --prefix

Fixes a regression that got introduced in commit ddf4d1a.
test: cluster: remove bind-twice-v1 test

It tests the same thing as bind-twice-v2, only not as in-depth.
test: cluster: rename bind-twice-v2 to bind-twice
test: cluster: unhide child errors in bind-twice

Errors in leaf child processes weren't picked up by the test runner
because they didn't get bubbled up to the main process. Don't forcibly
kill the child processes; tell them to quit gracefully, then inspect
their exit codes.
streams: introduce .cork/.uncork/._writev
net: implement ._writev for .cork/uncork() support

Add Writev method to StreamWrap class for writing mixed array of strings
and buffers. Expose this method for TCP class.
http: write buffers when chunked to embrace writev
test: fix timing sensitive tests
benchmark: add chunked-encoding benchmark