Large rewrite of internals to satisfy subclassing constraints.

This rewrite was the result of many discussions, starting in #54, but continuing into countless IM and email conversations. There were several competing concerns that arose, and I think this satisfies them all.

This rewrite is inspired largely by @rossberg-chromium's https://github.com/rossberg-chromium/js-promise/blob/master/promise.js, although there were many modifications necessary to make it work and pass all the tests.

In the end, the guiding principles seem to be:

- Store resolution value and rejection reason, instead of trying to extract a fulfillment value from the resolution value.
- Centralize all unwrapping in `then`, both on the input side (done by Promise Resolution Handler Functions) and the output side (done by Promise Reaction Functions).
- Do not differentiate between promises, promise subclasses, and thenables; use the `then` interface to send messages to all of them.
- More generally, do not use abstract operations when methods will do. Abstract operations should only supply the default implementation of methods.

As part of this rewrite, several other issues were addressed; #36 was started on, and most editorial and formatting issues (#34, #37, #49) were taken care of. This also closes #60 by virtue of that function no longer existing.

Note that the thenable coercions weak map was temporarily removed; it will be added back later (#39 #61).
Add "Deferred Construction Functions".

This is part of #36, formalizing the creation of functions that are passed in to user code.
Add built-in functions to pass to the resolver.

Again, part of #36.
Consolidate [[Resolution]] and [[Reason]] into [[Result]].

Also, document all the internal data properties after their recent overhaul.
s/internal data property/internal slot/g

(See brief discussion in #36.)
Fix Promise.cast; make Promise.all/race more generic.

`Promise.cast` was temporarily referencing a nonexistent ToPromise as a result of the refactor. I inlined the previous text into its definition.

Then, inside `Promise.all` and `Promise.race`, I now use Invoke to invoke the "cast" method of the called-on constructor, and to invoke the "then" method of the returned-from-cast promise. This latter step closes #53.
Add Promise.all countdown functions.

This was the last holdout: closes #36.