Ensure reject() always rejects with a reason value even if rejection value is a promise

This commit also introduces Util::rejectedPromiseFor() which is now also used in When::reject().
Document passing promises to resolve()/reject() methods of a Defered/Resolver
Merge remote-tracking branch 'origin/promise-rejection'

* origin/promise-rejection:
  Document passing promises to resolve()/reject() methods of a Defered/Resolver
  Ensure reject() always rejects with a reason value even if rejection value is a promise
Add promise-rejection to CHANGELOG