Test cleanup

This improves JSHint's CLI unit tests a bit. Aside from using Nodeunit (via `setUp` and `tearDown` method) and Sinon more effectively (via the "sandbox" feature), it also reduces shared state between test runs. The shared state forced tests to include irrelevant logic, but (more importantly) it could have led to false negatives.

[We first discovered this problem back in October](https://github.com/jshint/jshint/pull/1900#discussion_r18750300), but it's only with [the introduction of code coverage reporting](https://github.com/jshint/jshint/pull/2007) that I felt comfortable doing this refactoring.