buffer: misc logic simplification

Includes:
* No need for `typeof` when checking undefined.
* length is coerced to uint so no need to check if < 0.
* Stay consistent and always throw `new` errors.
* Returning offset + magic number in every write is error prone. Instead
  return the central write function which returns the correct offset.
smalloc: add external to alloc with callbacks

Forgot to actually assign cb_info to the External in smalloc::Alloc()
that accepts a callback to be run in the weak callback.
src: cares_wrap: remove two unused variables
src: rename macros.py to notrace_macros.py

This incarnation of macros.py is only used to disable the (d)trace
macros. Rename it so it better reflects its purpose. A new macros.py
will be added in a follow-up commit.
tools: fix js2c macro expansion bug

If the same macro was used twice in close proximity, the second one
didn't get expanded.
lib: macro-ify type checks

Increases the grep factor. Makes it easier to harmonize type checks
across the code base.
src: move NODE_MODULE_VERSION to node_version.h
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.