ECMAScript-ize; include more formal concretions.

The only slight change is that `[[IsPromise]]` now can be set to `undefined` for uninitialized promises, whereas it's set to `true` for initialized ones.