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
Events: QUnit logging system uses EventEmitter

Fixes #422
Events: Removed QUnit.off, hid QUnit.emit

Removed QUnit.off completely.
Hid QUnit.emit from the public API.
Renamed all of the events to match @jzaefferer's suggested event names
from js-reporters/js-reporters#1.

Ref #422
Events: Added test for duplicate listeners

Ref #422
Events: Added deprecation warning comments

Ref #422
Comments: Consolidated logging callback deprecations