Improve error context collection, and long stack trace stitching.

Maintain a promise execution stack that follows async promise
callbacks.  Refactor PromiseMonitor and ConsoleReporter to use new
error module which detects platform stack trace capabilities and
formatting.  Move more logic into PromiseMonitor so that reporters can
be as simple as possible.