Reporter: Move HTML reporter to a new JS file

- Removes QUnit.init and deprecated QUnit.reset
- Extends QUnit.extend to accept a `undefOnly` parameter,
  so we can check if it's needed to extend only unset/undefined properties
- HTML Logging is now related to each assertion through QUnit.log
- Now it logs exactly on the assertion's related test, without leaking. Ref #583
- The HTML reporter was refactored and improved. Ref #603
Core: Remove QUnit.* undocumented reporter methods

Undocumented internal methods QUnit.id, QUnit.addEvent, QUnit.addClass,
QUnit.hasClass, and QUnit.removeClass were removed.
Core: Register logging callbacks on config.callbacks
Tests: Remove after-done tests

The undocumented feature that re-opened the test suite for the html reporter,
when adding more assertions after test suite has finished running tests,
was removed. This only worked in the html reporter.

The callback interface never supported this properly and reporters such as
node-qunit, grunt-contrib-qunit and TestSwam never supported this either.

If this causes trouble, be sure to verify QUnit does not start until after
your tests are loaded (maybe using config.autostart).
Build: Detach jsDiff and HTML Reporter from QUnit

They're still built together anyway, but this allows us to make a special
build for QUnit to report on console only