Add support for Promise<std::tuple<...>> which can be applied

This is useful for Promises::All and for Mojo if we wanted Mojo IPCs to
be promise based.

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

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