child_process: Fix stdout=null when stdio=['pipe']

Previously, a command with a short stdio array would result in the child's
stdout and stderr objects set to null. For example:

var c = child_process.spawn(cmd, args, {stdio: ['pipe']});
// results in c.stdout === null.

The expected behavior is the above line functioning the same as this one:

var c = child_process.spawn(cmd, args, {stdio: ['pipe', null, null]});
// provides correct (non-null) c.stdout; as does the above, after this fix.
zlib: Emit 'close' on destroy().
net: lazy listen on handler

This allow the server to be shared without the need to handle connection
from master
cluster: do not use internal server API
net: support Server.listen(Pipe)
test-message: fix message output

1. The net changes add a stack frame to stdin errors.
2. The error line numbers were overly strict in many places.
install: use os.path.join() to create the npm shebang

Prettier formatting for the shebang if the "prefix" ends with a /
errnoException must be done immediately
test-message: fix message output

1. The net changes add a stack frame to stdin errors.
2. The error line numbers were overly strict in many places.
util: mark util.pump() as deprecated
Makefile: DRY js lint
errnoException must be done immediately
doc: util.pump is deprecated. Use Stream.pipe
doc: fix typos in child_process
fs: remove undocumented .destroy callbacks

The destroy() method of fs.ReadStream and fs.WriteStream takes a callback.
It's a leftover from the node 0.1 days, undocumented and not part of the
streams API. Remove it.
doc: util.pump is deprecated. Use Stream.pipe

Conflicts:

	doc/api/util.markdown
fs: fix naming of truncate/ftruncate functions

For backwards compatibility, fs.truncate(<number>) will proxy to
fs.ftruncate.

Fix #3805
install: install the "wafadmin/Tools" files into the correct dir

Previously they were going into just "wafadmin" and node-waf wasn't working.
install: add a "portable" mode to the shebang-rewriting logic

This "portable" mode rewrites the npm shebang to use the "node" executable
in the same directory relative to the "npm" script. This makes the "npm"
script "just work" even when "node" is not in the user's $PATH.

This mode is necessary for the precompiled binary packages that may potentially
be extracted to anywhere. The regular shebang-rewriting logic would normally
set the npm script's shebang to "/bin/node" which will not be present on anyone's
machine. In the end, we want the precompiled packages to be as user-friendly as
possible.
Makefile: add target for precompiled binary tarballs

This target compiles node with "/" as the prefix and installs into a directory
like: "node-v0.8.6-darwin-x86_64". Then it creates a gzipped-tarball of that
directory, called something like: "node-v0.8.6-darwin-x86_64.tar.gz".