Prior to this change, JS files without extension had not been linted.
To match them, we need a combination of positive and negative globbing
that does not mix well with the existing file selection for linting. Thus, we use
npm-run-all to run two ESLint invocations unconditionally in sequence
while still preserving the error code.
* Lint JS w/out extension too
* Fix newly surfaced linting errors
* Make use of npm-run-all for test script too
This eliminates the use of shelljs.exec's sync mode, which is the source
of the filehandle leaks that can cause EMFILE on OSX, and are
CPU-intensive everywhere.
Tested locally, needs poking before it gets released.