Re-do the promise-constructor (see #8).

It is now modeled after the `Map` constructor at http://people.mozilla.org/~jorendorff/es6-draft.html#sec-15.14.1. It also throws a `TypeError` when resolver is not a function, closing #10.
Add `Promise.from` coercer (closes #8).