Upgrade to jshint 2.5.1 and use cli.lint

jshint has sophisticated configuration options.  To support these we need to depend on the latest, and use more of the core code to remain DRY