HTML Reporter: Output runtime of each assertion in results

Adds the same value to QUnit.log details as a 'runtime' property.

Fixes #616
Closes #643
Core: Use `Error#stack` without throwing when available

Fixes #636
Closes #640
Test: Implements universal module setup

Fixes #633
Closes #635
Test: Rename module's setup/teardown to beforeEach/afterEach

QUnit.module setup and teardown functions are now deprecated as
they were moved to beforeEach/afterEach.

Tests were added to confirm they still work while deprecated.

beforeEach and afterEach are no longer exposed to the test context
as setup/teardown were accidentaly.

Ref #635
Tests: Improve modules tests

QUnit.module tests were moved - with some improvements - to a new
test file modules.js

Some other tests were also removed because they were revealed as
unnecessary tests.

Ref #635
Async: Tests are now Promise-aware

Fixes #632.
Ref #534.