Gruntfile: Use grunt-mocha-test instead of a shell command for running mocha tests

This fixes a couple issues that existed with the 'grunt test' command:

- The shell command assumes there is a globally installed version of mocha. It's better to use the version in node_modules, as I'm about to use a feature only available in 1.18+ (promise support), and we shouldn't assume that this is what's installed.

- Failing tests showed up in the output, but Grunt still issued a "Done, without errors" message, whereas grunt-mocha-test properly aborts the task.
Update mocha to 1.20.1 (for promise support)

Since mocha 1.18+, you can return a promise instead of accepting a done callback to signify an async test.