Promises: Implement Promise<> handle with Then and Catch

Implements Then and Catch on top of AbstractPromise as well as
ManualPromiseResolver<> which is needed for testing at this
stage (PostTask doesn't yet return a promise). It's also
necessary for promises to interface with old style callback
based libraries which are extremly common in Chromium.

Design: https://docs.google.com/document/d/1l12PAJgEtlrqTXKiw6mk2cR2jP7FAfCCDr-DGIdiC9w/edit

Bug: 906125
Change-Id: Id7206698f37c59cfc201f3970cbf66a2ef89ee4e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1599620
Commit-Queue: Alex Clarke <alexclarke@chromium.org>
Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Fran├žois Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661045}
13 files changed