cluster: support setting data on shared server

If `obj` given to `cluster._getServer` has `_setServerData` or
`_getServerData` methods, the data will be synchronized across workers
and stored in master.
tls: share tls tickets key between cluster workers

fix #5871
openssl: use asm for sha, md5, rmd
streams: Don't emit 'end' until read() past EOF

This prevents the following sort of thing from being confusing:

```javascript
stream.on('data', function() { console.error('got data'); });
stream.pause(); // stop reading

// turns out no data is available
stream.push(null);

// Hand the stream to someone else, who does stuff...
setTimeout(function() {
  // too late! 'end' is already emitted!
  stream.on('end', function() { console.error('got end'); });
});
```

With this change, the `end` event is not emitted until you call `read()`
*past* the EOF null.  So, a paused stream will not swallow the `end`
event and emit it before you `resume()` the stream.
doc: Fix missing backtick in debugger doc
doc: document possible return values of os.arch()
cluster: remove duplicate this.errno assignment
cluster: fix shared handle bind error propagation

A failed bind() was already being correctly reported in round-robin
mode. This commit fixes bind() error reporting in shared handle mode.

Fixes #5774.
test: cluster: add 'bind to privileged port' tests
src: remove unused tick_spinner
test: loosen timeout in https-no-reader

fix #5925
child_process: add 'shell' option to .exec()

No test, we can't rely on an alternate shell being available.

Fixes #5935.
doc: vm: fix incorrect API documentation

On timeout, an Error object is thrown, not null.
v8: upgrade to v8 3.20.9
src: don't use NewExternal() with unaligned strings

V8 3.20.9 enforces that external pointers are aligned on a two-byte
boundary.

We cannot portably guarantee that for the source code strings that
tools/js2c.py generates so simply stop using String::NewExternal()
altogether (and by extension String::ExternalAsciiStringResource).

Fixes the following run-time assert:

  FATAL ERROR: v8::String::NewExternal() Pointer is not aligned