win: make nodejsvars.bat detect whether npm is available
win/msi: define features before directories/components
win/msi: don't install pdb file

It's only available in debug builds, and we're not providing
installer packages for debug builds anyway.
win/msi: don't create empty npm folder in %appdata%

Npm creates this folder when it's needed. Creating it in the installer
violates the per-user / per-machine scope separation.
win/msi: use consistent registry key paths
win/msi: make npm a feature separate from the runtime
win/msi: separate features for ETW and perfctr support
win/msi: make 'add to path' a separate feature
win/msi: refactor 'node.js runtime' feature

* This feature now includes the start menu items.
* 'nodejsvars.bat' was renamed to 'nodevars.bat'.
* Improved feature description.
win/msi: clean up the 'documentation shortcuts' feature
win/msi: update 'install finished' message
win/msi: don't include architecture in start menu group name
win/msi: miscellaneous style cleanups
win/msi: enable modify and repair
doc: Add wrk's license to LICENSE file
http: check if incoming parser has already been freed

Fix #4948

This adds a check before setting the incoming parser
to null. Under certain circumstances it'll already be set to
null by freeParser().

Otherwise this will cause node to crash as it tries to set
null on something that is already null.
Revert "http: check if incoming parser has already been freed"

This reverts commit 9f4c3b0d45f858d3d3021ef4b8edebf6005008ff.
buffer: strip high bits when converting to ascii

Consider the following example:

  console.log(Buffer('ú').toString('ascii'));

Before this commit, the contents of the buffer was used as-is and hence it
prints 'ú'.

Now, it prints 'C:'. Perhaps not much of an improvement but it conforms to what
the documentation says it does: strip off the high bits.

Fixes #4371.
buffer: speed up ascii character scanning

Speed up ASCII character scanning and conversion by 25% to 30% by scanning and
converting whole words instead of individual bytes.
domains: Handle errors thrown in nested error handlers

If a domain error handler throws, it should be caught if it was
in a stack of nested domains.

Fix #4953