Extract format module

Extract formatting utils used by unhandled rejection reporting, and add some unit tests.

See also #412 
I'm splitting hairs, but "including" is technically correct, since at least on v8, the first line of the `stack` property contains the error's `message` :)

The idea here, in the builtin (aka always-on) unhandled rejection reporting, is to do something as simple as possible, with as little code as possible, that is both useful and resembles what devs are accustomed to seeing.  Otherwise, you end up writing a lot more special case code, like we have in the [promise monitor](https://github.com/cujojs/when/blob/master/monitor/error.js), which tries harder to give good output across JS engines.  It's opt-in so you don't take the code size and performance hit by default.