cluster: test events emit on cluster.worker

v0.10 and node docs specific that in a worker, the 'message' and 'error'
event emits on process, and on cluster.worker.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
Revert "repl: fix overwrite for this._prompt"

This reverts commit 7166b55015261de8ab69758320f3d9159b3eaadd.
repl: proper `setPrompt()` and `multiline` support

fix #8031
Cluster: fix shared handles on Windows

This is the Node side of the fix for Node's cluster module on Windows.
https://github.com/joyent/node/issues/7691

The other required part is
https://github.com/joyent/libuv/pull/1384

Windows and Unix return certain socket errors (i.e. EADDRINUSE) at
different times: bind on Windows, and listen on Unix.
In an effort to hide this difference, libuv on Windows stores such
errors in the bind_error field of uv_tcp_t, to defer raising it at
listen time.
This worked fine except for the case in which a socket is shared in
a Node cluster and a bind error occurs.

A previous attempt to fix this (
https://github.com/joyent/libuv/commit/d1e6be1460f555a1f8a4063d7642696aa7238769
https://github.com/joyent/node/commit/3da36fe00e5d85414031ae812e473f16629d8645
) was flawed becaused in an attempt to relay the error at the JS level
it caused the master to start accepting connections.

With this new approach, libuv itself is relaying the bind errors,
providing for a uniform behavior of uv_tcp_listen.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
Revert "Cluster: fix shared handles on Windows"

This reverts commit 4e68a28e20b348f3519b359a17fcb941b235202b.
Add fast path for simple URL parsing

This patch adds a fast path for parsing of simple path-only URLs, as commonly
found in HTTP requests received by a server.

Benchmark results [ms], before / after patch:
/foo/bar              0.008956   0.000418 (fast path used)
http://example.com/   0.011426   0.011437 (normal slow path, no change)

In a simple 'ab' benchmark of a single-threaded web server, this patch
increases the request rate from around 6400 to 7400 req/s.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
cluster: support options in Worker constructor

This commit moves some common Worker code into the constructor
via support for an options argument.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
tls: throw an error, not string

Reviewed-By: Fedor Indutny <fedor@indutny.com>
build: i18n: improve Intl build, add "--with-intl"

The two main goals of this change are:
 - to make it easier to build the Intl option using ICU
   (particularly, using a newer ICU than v8/Chromium's version)
 - to enable a much smaller ICU build with only English support
   The goal here is to get node.js binaries built this way by
   default so that the Intl API can be used. Additional data
   can be added at execution time (see Readme and wiki)

More details are in the PR https://github.com/joyent/node/pull/7719

In particular, this change adds the --with-intl= configure option to
 provide more ways of building "Intl":
 - full-icu picks up an ICU from deps/icu
 - small-icu is similar, but builds only English
 - system-icu uses pkg-config to find an installed ICU
 - none does nothing (no Intl)

For Windows builds, the "full-icu" or "small-icu" options are added to
vcbuild.bat.

Note that the existing "--with-icu-path" option is not removed from
configure, but may not be used alongside the new option.

Besides the README.md, there are wiki changes to be made: search for
"Intl" on https://github.com/srl295/node/wiki/Installation to see items
to add into the main wiki. (Update README.md as appropriate)

Now, a summary of the changes:

* README.md : doc updates

* .gitignore : added "deps/icu" as this is the location where ICU is
  unpacked to.

* Makefile : added the tools/icu/* files to cpplint, but excluded a
  problematic file.

* configure : added the --with-intl option mentioned above.
  Calculate at config time the list of ICU source files to use and data
  packaging options.

* node.gyp : add the new files src/node_i18n.cc/.h as well as ICU
  linkage.

* src/node.cc : add call into
  node::i18n::InitializeICUDirectory(icu_data_dir) as well as new
  --icu-data-dir option and NODE_ICU_DATA env variable to configure ICU
  data loading. This loading is only relevant in the "small"
  configuration.

* src/node_i18n.cc: new source file for the above Initialize.. function,
  to setup ICU as needed.

* tools/icu : new directory with some tools needed for this build.

* tools/icu/icu-generic.gyp : new .gyp file that builds ICU in some new
  ways, both on unix/mac and windows.

* tools/icu/icu-system.gyp : new .gyp file to build node against a
  pkg-config detected ICU.

* tools/icu/icu_small.json : new config file for the "English-only" small
  build.

* tools/icu/icutrim.py : new tool for trimming down ICU data. Reads the
  above .json file.

* tools/icu/iculslocs.cc : new tool for repairing ICU data manifests
  after trim operation.

* tools/icu/no-op.cc : dummy file to force .gyp into using a C++ linker.

* vcbuild.bat : added small-icu and full-icu options, to call into
  configure.

squash!  fix style: https://github.com/joyent/node/pull/7719#issuecomment-50898496

squash!  fix style: https://github.com/joyent/node/pull/7719#discussion-diff-15720990