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
Build: Remove frail autostart test from browserstack-runner
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
Tests: Extract assert tests into their own file
Assert: Add alias for throws called 'raises'

Brings back the original method name, for compatibility with environments
that consider 'throws' a reserved word.

Fixes #663
Closes #675
Build: Upgrade to commitplease 1.11.0

commitplease had a bug before 1.9.0 where it didn't properly handle the
verbose flag `git commit -v`.

https://github.com/jzaefferer/commitplease/pull/19#issuecomment-45204680

This would lead to git diff for preview getting subjected to commit
message validation, which could abort commits if it failed.

Closes #679
Core: change url() helper to output `?foo` instead of `?foo=true`

Since the URL params parsing mechanism in QUnit treats the missing value
as if the param has value of `true`, we can do the same thing in reverse.
If the parameter to serialize a URL with has the value of `true`, it's
safe to skip the value part of the query string.

Thus, toggling the checkboxes in the toolbar will result in:

    test.html?noglobals&notrycatch

instead of:

    test.html?noglobals=true&notrycatch=true

Closes #680
HTML Reporter: Enable activating config.hidepassed from URL params

Loading a QUnit test suite with `?hidepassed` appended to the URL is
useful for CI services that take a screenshot of the completed test
suite upon completion in various browsers, for example.

Since the event handlers for click and change were mostly identical, it
makes sense to consolidate them and to simply detect when we're dealing
with a SELECT menu by detecting the `selectedIndex` property.

config.hidepassed will typically be toggled after the tests are under
way or finished running. Since it's only supposed to toggle one HTML
classname, it doesn't make sense to refresh the whole page like toggling
other toolbar options does. Instead, use `history.replaceState()` if
available to update the browser URL without refreshing.

Fixes #457
Closes #678
Core: Remove the newly introduced global hooks until we have consensus

Between locating the hooks in `QUnit` or `QUnit.config` and making them
simple setters and callback lists (like QUnit.done et al) and upcoming
plans for nested suites, we decided not to release this feature, for now.

I'm keeping the abstractions for hooks in place, so it should be trivial
to bring this back in whatever form we decide on later.

Effectively reverts 5ee31a083af3b17187f90cde54885bcc46d3dd8f and follow-up
commits.

Fixes #665
Ref #633
Ref #635
Ref #647
Build: Upgrade to commitplease 2.0.0

commitplease now accepts "[tmp]:" and similar to temporary commits,
useful while updating pull requests that are squashed later.
Core: Remove constructor

This constructor were implemented on @1039a2c, to tell if the
callback methods have been overwritten on the actual QUnit object.

It doesn't work for backwards compatibility and the old and deprecated
way to assign callbacks doesn't work anymore.

Making this change won't affect anything on the current API, even
assigning a new value on any callback function. The effects are the
same with or without this commit, proving the removed code is useless.

Closes #667
Core: Reorder code for cleanup
Core: Cleanup the logging callbacks factory
Callbacks: Restore and warn if some logging callback gets modified

Also fills the stack.js tests to verify the warnings
Async: Fail assertions after existing assert.async flows are resolved

Improves test coverage, cleans up tests for consistency. Updates `ok`
assertion to always use `push`.

Fixes #668
Closes #669
Tests: Cleanup module test, removing duplicated non-atomic tests

Extended other tests to keep the same test coverage.

Fixes #477
Build: Specify valid components for commit messages

Closes #682
Omit 'window.' when accessing browsing location

The location object is a global, just like document.

Using it via 'window' needlessly adds complexity and, for example,
makes it harder to catch typos in static analysis.