constructor: ensure completion function is called
helpers: call assert on main stack

some helper functions have assertions re the argument used
to resolve/reject the promise. If these are run inside a then() or
catch(), then they are caught and turned into rejected promises.

Wrap calls to assert / done in setImmediate() so the test framework
can see these assertions if they throw
all: ensure assert() not run inside then()

use modified helper functions
new helper function expectedRejectFunc for custom assertions
constructor: remove noisy comments around now-succeeding test
constructor: fix terminology

use 'resolved' 'settled' etc. accurately in test description
constructor: ensure assert() doesn't run inside then()

use helper functions or setImmediate as appropriate
constructor: remove incorrect test

then() always queues its handlers, so do not
expect onRejected to be called immediately even
when promise is already settled
helpers: new helper fn expectedRejectFunc
prototype: remove noisy comments

default onRejected handler Thrower does not actually
throw an exception; simplify test and remove noisy comments
simple: remove obsolete test
test: ensure that assert() called outside of then()

Using either a helper function or an explicit setImmediate()
when the assert doesn't fit an existing helper