Flatten guard and thread thisarg
Yield to platform before reporting unhandled rejections to allow time
for other promise implementations (including other copies of when in
the same VM, a la node/npm) to handle rejections in their scheduler
queue.  Reduces false positives when mixing promise implementations.

Report when previously unhandled rejections become handled,
correlating the two messages with an id.

Fix #325