Merge branch 'v0.8.21-release' into v0.8
Now working on 0.8.22
blog: Post for v0.8.21
ChangeLog: Missed item about EINPROGRESS
blog: Update with EINPROGRESS changelog item
doc: update instructions on home page

Document how to run the example on the home page in more detail.

Apparently our Windows brethren are prone to double-clicking on the
binary instead of running it from the command line.

Fixes #4854.
build, windows: disable SEH

Turn off safe exception handlers, they're incompatible with how
openssl is compiled / linked under MSVS 2012.

Addresses the following build error:

  openssl.lib(x86cpuid.obj) : error LNK2026: module unsafe for SAFESEH
  image. [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]
  openssl.lib(x86.obj) : error LNK2026: module unsafe for SAFESEH
  image. [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]
  # etc. etc.
  g:\jenkins\workspace\nodejs-oneoff\Release\node.exe : fatal error
  LNK1281: Unable to generate SAFESEH image.
  [g:\jenkins\workspace\nodejs-oneoff\node.vcxproj]

Fixes #4242.
test: fix tap output on windows

Test output is always \n and not platform dependent
doc: remove note about close event
http: use socket.once, not socket.on

Register the 'close' event listener with .once(), not .on().

It doesn't matter in the grand scheme of things because the listener
doesn't keep references to any heavy-weight objects but using .once()
for a oneshot listener is something of a best practice.
blog: Post about v0.9.11
crypto: don't assert when calling Cipher#final() twice

Remove the assert() that triggered when Cipher#final() or
Decipher#final() was called twice.

Fixes #4886.
test: optionally set common.PORT via env variable

This is a back-port of commit 17a8126 from the master branch.
test: make simple/test-dgram-pingpong respect PORT

Don't use hard-coded port numbers, use common.PORT instead.

Should fix the occasional Jenkins failure; the builds run in parallel.
link to LevelUP modules wiki page, not level-hooks
doc: add url.resolve() usage examples

Fixes #4913.
cluster: propagate bind errors

This commit fixes a bug where the cluster module fails to propagate
EADDRINUSE errors.

When a worker starts a (net, http) server, it requests the listen socket
from its master who then creates and binds the socket.

Now, OS X and Windows don't always signal EADDRINUSE from bind() but
instead defer the error until a later syscall. libuv mimics this
behaviour to provide consistent behaviour across platforms but that
means the worker could end up with a socket that is not actually bound
to the requested addresss.

That's why the worker now checks if the socket is bound, raising
EADDRINUSE if that's not the case.

Fixes #2721.
process: invoke EventEmitter on `process`

This properly sets the `_maxListeners` property, which
fixes the max listener warning. Closes #4924.
blog: Post for 0.9.12
blog: Update streams2 feature post to match actual doc