Deferred: Increase usability of jQuery.when with other implementations

jQuery.when was previously assuming that in order for value to be a
Promise, it must implement a `promise` method.  All current specs that I'm
aware of define a promise as "an object or function with a then method
whose behavior conforms to this specification."[1][2].  The ES6 spec[3]
defines this too, but I've got no idea exactly where I should link to in
that document for that - the lingo is a bit above my head :)

[1]http://promises-aplus.github.io/promises-spec/#point-6
[2]http://wiki.commonjs.org/wiki/Promises/A
[3]http://people.mozilla.org/~jorendorff/es6-draft.html#sec-ispromise

Fixes #14510