Dump: Configurable limit for object depth

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 maxDepth config 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.

Closes #578
Closes #638
Tests: Extract tests for QUnit.dump into its own file

Also moves two tests that check recursion in deepEqual, which share
helpers with the QUnit.dump tests. Moves those helpers on the test
context to get rid of globals.
Dump: Fix typeof check for setInterval

Fixes #631.
Closes #642.
Callbacks: Throws an error on non-function params for logging methods

Closes #626
HTML Reporter: Output runtime of each assertion in results

Adds the same value to QUnit.log details as a 'runtime' property.

Fixes #616
Closes #643
Core: Use `Error#stack` without throwing when available

Fixes #636
Closes #640
Test: Implements universal module setup

Fixes #633
Closes #635
Test: Rename module's setup/teardown to beforeEach/afterEach

QUnit.module setup and teardown functions are now deprecated as
they were moved to beforeEach/afterEach.

Tests were added to confirm they still work while deprecated.

beforeEach and afterEach are no longer exposed to the test context
as setup/teardown were accidentaly.

Ref #635
Tests: Improve modules tests

QUnit.module tests were moved - with some improvements - to a new
test file modules.js

Some other tests were also removed because they were revealed as
unnecessary tests.

Ref #635
Test: Uses the non-recursive reference to the current test
Test: Remove unused code

Ref https://github.com/jquery/qunit/pull/634#discussion_r17050275
Logging: Add runtime to moduleDone

Add runtime to moduleDone
Minor cleanup of other logging runtime

Fixes #645
Test: Synchronize hooks order

The 'synchronize' functions now also accepts arrays of functions

Fixes #647
Closes #650
Reporter: Ensure markup is valid XHTML

Build: Ensure markup is valid XHTML (entities and empty elements)

Fixes #645
Tests: Increase max expected time for 'timing' test module

Android is too slow to meet the previously expected maximum time asserted

Should resolve the failure in http://swarm.jquery.org/result/2048943
Tests: Remove invalid comment

The reordering is disabled in logs.html
Async: Implement assert.async

Enforce test-bound start/stop calls

Fixes #534
Closes #653
Logging: Defer begin event till tests actually starts

Also adds minor test cleanup

Fixes #659
Async: Tests are now Promise-aware

Fixes #632
Ref #534
Closes #634
Core: Implements QUnit.skip

Also logs skipped tests on testDone callback that are handled on
the html reporter

Fixes #637
Fixes #434
Closes #652