cluster: report more errors to workers

Some errors for listening and binding to a socket were not properly
delivered to workers.

fix #6767
cluster: replace erroneous comma with semicolon
cluster: disconnect callback should always occur

Fixes issue in 0.11 where callback doesn't occur if worker count is
currently zero.  In 0.10 callback occurs after worker count is zero, and
occurs in next tick if worker count is currently zero.
cluster: only forcibly exit worker on unclean exit

Fix inadvertent v0.11 changes to the definition of suicide, particularly
the relationship between suicide state, the disconnect event, and when
exit should occur.

In v0.10, workers don't forcibly exit on disconnect, it doesn't give
them time to do a graceful finish of open client connections, they exit
under normal node rules - when there is nothing left to do. But on
unexpected disconnect they do exit so the workers aren't left around
after the master.

Note that a test as-written was invalid, it failed against the v0.10
cluster API, demonstrating that it was an undocumented API change.
cluster: do not synchronously emit 'setup' event

This is a problem present in both v0.10, and v0.11, where the 'setup'
event is synchronously emitted by `cluster.setupMaster()`, a mostly
harmless anti-pattern.
test: fix assumption of worker exit on disconnect

Master was disconnecting its workers as soon as they both started up.
Meanwhile, the workers were trying to listen. Its a race, sometimes the
disconnect would happen between when worker gets the response message,
and acks that message with a 'listening'. This worked OK after v0.11
introduced a behaviour where disconnect would always exit the worker,
but once that backwards-incompatible behaviour is removed, the worker
lives long enough to try and respond to the master, and child_process
errors at the attempt to send from a disconnected child.
test: fix test-cluster-eaccess to work on windows
Merge remote-tracking branch 'upstream/v0.10'

Conflicts:
	lib/cluster.js
	lib/dgram.js
	lib/net.js
dns: add resolveSoa and 'SOA' rrtype

You can now query for SOA records by either passing 'SOA' to `resolve`
or by using the new `resolveSoa`
docs: process.on('exit') receives exit code

The fact that the "exit" event passes the exit code as an argument
as omitted from the documentation. This adds the explanation and
augments the example code to show that.
doc: clarify process on exit safe usage
doc: document that `process.send` is synchronous

Ref #2598
Merge remote-tracking branch 'upstream/v0.10'
v8: Upgrade to 3.22.24.10
2013.12.31, Version 0.11.10 (Unstable)

* http_parser: update to 2.2

* uv: Upgrade to v0.11.17

* v8: Upgrade to 3.22.24.10

* buffer: optimize writeInt* methods (Paul Loyd)

* child_process: better error handling (Alexis Campailla)

* cluster: do not synchronously emit 'setup' event (Sam Roberts)

* cluster: restore backwards compatibility and various fixes (Sam Roberts)

* crypto: remove unnecessary OpenSSL_add_all_digests (Yorkie)

* crypto: support GCM authenticated encryption mode. (Ingmar Runge)

* dns: add resolveSoa and 'SOA' rrtype (Tuğrul Topuz)

* events: move EE c'tor guts to EventEmitter.init (Bert Belder)

* http: DELETE shouldn't default to chunked encoding (Lalit Kapoor)

* http: parse the status message in a http response. (Cam Swords)

* node: fix removing AsyncListener in callback (Vladimir Kurchatkin)

* node: follow specification, zero-fill ArrayBuffers (Trevor Norris)

* openssl: use ASM optimized routines (Fedor Indutny)

* process: allow nextTick infinite recursion (Trevor Norris)

* querystring: remove `name` from `stringify()` (Yorkie)

* timers: setImmediate v8 optimization fix (pflannery)

* tls: add serialNumber to getPeerCertificate() (Ben Noordhuis)

* tls: reintroduce socket.encrypted (Fedor Indutny)

* tls: fix handling of asterisk in SNI context (Fedor Indutny)

* util: Format negative zero as '-0' (David Chan)

* vm: fix race condition in timeout (Alexis Campailla)

* windows: fix dns lookup of localhost with ipv6 (Alexis Campailla)
Merge branch 'v0.11.10-release'
Now working on 0.11.11
blog: Post for v0.11.10
Merge remote-tracking branch 'upstream/v0.10'
events: add initial observer support

Users can add an event emitter observer that will call a callback
whenever an event emitter is created. A storage value can also be passed
or returned that will persist with the event emitter instance.

The observer events before/after/error/add/remove will be added in the
future. Also with the ability to add an observer to an event emitter
that has already been created.