promise.resolve(promise) === fulfillment

Resolving a promise with itself should not attempt assimilation. This scenario should be handled by simply fulfilling the promise with itself.

Also add pseudo promise coercion. This allows a deferred object to offer the promise it is being backed by.