doc: child_process: document uid and gid spawn() options
repl: call resume() after setRawMode()

Solves #4178, but does not fix the underlying issue
blog: Post for v0.9.3 release
url: parse hostnames that start with - or _

Allow hostnames like '-lovemonsterz.tumblr.com' and '_jabber._tcp.google.com'.

Fixes #4177.
build: add --unsafe-optimizations configure switch

Turns on -O3 and other optimizations that may produce buggy code with some
toolchains. Use at your own risk.
v8: remove optimization switches

Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi, we set
them globally in $(TOPLEVEL)/common.gypi.

Commit 29d12c73 accidentally reintroduced the switches again. In particular,
the 'cflags!': ['-O2','-Os'] section forced building V8 without any
optimizations, resulting in a steep (~66%) performance drop on some benchmarks.

Fixes #4191.
Merge remote-tracking branch 'origin/v0.8'

Conflicts:
	configure
	deps/v8/build/common.gypi
windows: correct outputs list in "node_etw" gyp target

The gyp target node_etw didn't list its output dependencies. This
was causing virgin builds to fail with a "failed to open file for
write" error.

With this corrected outputs list, gyp reliably pre-creates
required output directories.
Print warning when maxTickDepth is reached
zlib: reduce memory consumption, release early

In zlibBuffer(), don't wait for the garbage collector to reclaim the zlib memory
but release it manually. Reduces memory consumption by a factor of 10 or more
with some workloads.

Test case:

  function f() {
    require('zlib').deflate('xxx', g);
  }
  function g() {
    setTimeout(f, 5);
  }
  f();

Observe RSS memory usage with and without this commit. After 10,000 iterations,
RSS stabilizes at ~35 MB with this commit. Without, RSS is over 300 MB and keeps
growing.

Cause: whenever the JS object heap hits the high-water mark, the V8 GC sweeps
it clean, then tries to grow it in order to avoid more sweeps in the near
future. Rule of thumb: the bigger the JS heap, the lazier the GC can be.

A side effect of a bigger heap is that objects now live longer. This is harmless
in general but it affects zlib context objects because those are tied to large
buffers that live outside the JS heap, on the order of 16K per context object.

Ergo, don't wait for the GC to reclaim the memory - it may take a long time.

Fixes #4172.
zlib: pass object size hint to V8

Inform V8 that the zlib context object is tied to a large off-heap buffer.

This makes the GC run more often (in theory) and improves the accuracy of
--trace_external_memory.
tls: delete useless removeListener call

onclose was never attached to 'end' so this call to remove this listener
is useless.  Delete it.
url: make url.format escape delimiters in path and query

`url.format` should escape ? and # chars in pathname, and # chars in
search, because they change the semantics of the operation otherwise.
Don't escape % chars, or anything else. (see: #4082)
build: let gyp choose msvs version
zlib: s/clear/close/ and match other close() semantics
test: Use setImmediate for recursive deferral

This should have been with 21c741f, but didn't catch it then.
Taking our own advice.
deps: upgrade libuv to 97c527a
tracing: add systemtap support
build: add --systemtap-includes configure switch
windows: generate ETW events to track v8 compiled code positions

Patch by Henry Rawas and Scott Blomquist.