Core: Only measure runtime of running tests, not loading

Changed config.started to be the time the first time a test is run, instead of
when QUnit is initialized. This fixes the total time reporting for scenarios
where config.autostart = false and QUnit.start() is called sometime later.

Closes #555
Tests: Inject testswarm script after loading all tests
Grunt: Watch task run the default task at start

Ref #582
Grunt: Update test-on-node task to remove globals

Ref #582
Closes #586
Assert: Simplify ok assertion

Fixes #587
Dump: Move QUnit.jsDump to QUnit.dump

Fixes gh-592
Ref gh-591
Build: Move jsdiff to external directory

Closes gh-591
Build: Clean up Gruntfile

* general: Use strings instead of arrays where possible.
* jshint: Use 'true' instead of hardcoding jshintrc. Saves duplication
  and will make a config file in a subdirectory like src/ or test/
  work as expected.
* jshint: Merge test/dist patterns.
* jshint: Merge the different tasks into one 'all' task.
* jshint: Use "*.js" instead of "Gruntfile.js".
* jshint: Add build/.
* watch: Include build/.
* watch: Remove .* pattern (unused).
Assert: Implement Assert constructor with test context

For backwards compatibility, `QUnit.push` still works, though `assert.push`
should be used instead. Functions assigned to `QUnit.assert` are now added
to the `Assert` prototype and should use `this.push` instead of `QUnit.push`.

Fixes #374
Closes #588
Build: Adds browserstack.json

Configuration for https://github.com/browserstack/browserstack-runner
Requires BROWSERSTACK_USERNAME and BROWSERSTACK_KEY env vars to be set.
Will look into Travis integration later.

Closes #601
Core: Removed obsolte JSHint setting, was for a Grunt 0.3.x workaround

Closes #602
Export: Stop exporting assert methods
Assert: Adds error method on removed assertions from global scope

Also the same from QUnit.constructor.prototype scope.

Refs gh-563#issuecomment-42683521