WIP: Initial work on Grunt integration

Need to do more work on adding Istanbul and mocha to the Grunt tasks so we can remove the Makefile and have "One True Build System".

A few of the moving parts:

| Module | Description |
|-----------|----------------|
| `grunt` | JavaScript task based build system. |
| `grunt-contrib-clean` | Run `rm -rf` on the specified files/directories. |
| `grunt-contrib-jshint` | Run jshint on the specified files (see .jshintrc for rules). |
| `grunt-copyright` | Checks for MPL copyrights in the specified files. |
| `grunt-jscs-checker` | Run JSCS (JavaScript Style Checker) to enforce code style guidelines (see .jscsrc for rules). |
| `grunt-nsp-package` | Checks for known exploits in the package.json dependencies/devDependencies against the http://nodesecurity.io database. |
| `precommit-hook` | Add a git precommit hook to trigger tests and linting before committing to the repo. |

Fixed the errors/warnings reported by jshint, jscs, and copyright tasks. In fact, because of precommit-hook, you can't commit changes if there are errors reported (which should force good coding style since your code must pass jshint and jscs before it can be checked in).

At any rate, feel free to delete/close this PR if you don't think Grunt is a good fit over Makefile. Grunt isn't always a perfect fit, and we can find other ways of catching errors by adding more linting tools or checks elsewhere, or we can mix and match by moving some tasks to Grunt and having Make call grunt tasks instead.