JSLint whitespace, grunt tasks to test and automatically regenerate extensions

Most important change is probably `grunt watch:chrome` to automatically reassemble the chrome extension when changes are made.

- turned on JSLint's whitespace checking
  - enforces consistent indentation (so the `indent: 4` setting actually matters now)
  - requires a space after the keyword "function"; disallows `function()`, requires `function ()`
  - requires spaces around mathematical operators; disallows `x=y`, requires `x = y`
  - apparently only allows one variable per line for each use of "var" (see the change in `src/ext/automatch.js`)
- `grunt qunit` or `grunt test` runs the QUnit tests
- `grunt watch:chrome`, `grunt watch:firefox`, and `grunt watch:safari` watch for changes to relevant files and automatically run the rake tasks to assemble/build the extension for the given browser
- `grunt watch:browsers` automatically rebuilds all the browsers when a relevant file changes

As usual, `npm install` will need to be run for the new grunt tasks to work.