Extract code so any object can be blessed with promise behavior

This will allow the creation of Promise subclasses that have different behavior and require different blessings, whilst still being actual promises.

Also changed modules to work better with the inevitable circular references.
Don't create new state adoption function for every promise
Use promise constructor for resolution propagation

Ensures 'then()' returns a promise of the same class.
Rename scheduler to trampoline
then() on prototype should return instance of correct class
Implement Promise.from(), Promise.rejected() and Promise#to()

These allow construction of promises of an expected class, as well as assimilation of non-promise values.
Remove .when() and .rejected() from module interface
Remove when() implementation in favor of Promise.from()
Reject when transformer returns the promise for the transformation result
Handle thenables that fulfill with themselves
legendary@0.9.0