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
maxDepth: Add a variable to limit display object parsing

In projects with deep object graphs, like Ember, walking all properties
of an an object recursively can end up walking most of memory. This
causes the browser to run out of memory and kill the tab/thread.

This introduces a depth option for the parse function, which is used in
places where strictly accurate output of an object is not needed, for
instance, when showing two un-equal object in test output.