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.
Build: Enable jscs linelength check, fix many too-long lines

Mostly adds linebreaks to long strings, sometimes renames variables
or edits module and test names to make them shorter. Updates grunt-jscs
to allow disabling for the code from external/jsdiff.js. Keeps excluding
test/deepEqual.js from grunt file, still has 1000+ errors even without
line length check.

Fixes #654
Closes #686
Build: Fix copyright notice in src/, should include first year as well

Fixes #695
Build: Add "All" to commitplease config

All has been used in the past and I was planning to use it soon for a
clean up commit. Not sure what other component to use since we seem to
require one, now.
All: Remove use of typeof for undefined properties

Per style guide, use plain undefined checks instead.

Closes #692
Closes #702
HTML Reporter: Move QUnit.reset back to core to run it before testDone

Since the HTML reporter will always be the first to register the testDone
callback, there's no way to do custom fixture cleanup before QUnit.reset
runs. Moving this in src/test.js makes sure that the fixture reset runs
after any custom testDone callbacks, allowing proper cleanup.

This is still only an intermediate solution, since we can't just remove
QUnit.reset without addressing the need for custom resets. The source
comment in front of the QUnit.reset call is therefore somewhat misleading.
I guess we can live with that.

Fixes #697
Ref #617
Closes #698