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
Build: Fix TestSwarm config after renaming test suite
Test: Introduce order independent testId to replace testNumber

Introduces testId, intended to be a unique identifier for a test
based off of module name and test name only, and is therefore
order independent, enabling asynchronous test loading.

Fixes #538