On windows removeSync randomly seems to fail with DIRNOTEMPTY. By using
the async version fs-extra will do some back-off-retry logic to
hopefully get this dir deleted
* build: upgrade asar to ^1.0.0
This is to remove a transitive security vulnerability.
The API changed from callbacks to Promises, so `script/gn-asar.js`
needed to be changed.
* build: add klaw to package.json
`klaw` is used in `script/lint.js`, but it was a transitive dependency.
* build: add fs-extra to package.json
`fs-extra` is used in `script/gn-asar.js`, but it was a transitive
dependency.
* refactor: remove js2asar.py and port logic to JS in more readable / GN-style way
* refactor: further clean up ASAR impl, add new node_action GN template