Improved the Promise test

In order to get the Promise test to work, I needed to implement
asynchronous test result writing. To do this, test functions may now,
instead of returning true/false, instead at some point call
asyncTestPassed(), which is a function provided by the testing
environment that registers the test as passed regardless of execution
order. build.js has been updated to provide such a function, as has the
node.js test runner.

The historical results have not been re-verified using this updated test
yet.
Added Promise.all and Promise.race tests

Again, the results for these are naively copied from the main Promise
test.
Fixed a bug in the Node test script
Organised Promise tests into subtests.
Partially fixed subtests' results printing.

The supertest totals and browser tally yet remain to be dealt with.
Updated to full functionality.

Async tests can now update the "current browser" header when they complete, thus making them fully functional.
Merge pull request #375 from webbedspace/promise

Improved Promise tests, and added support for async testing