Adds await on a tuple of futures.

Currently the Process::await implementation on list<Future>, by the
nature of std::list, expects equally typed futures. This new override
implements await for a tuple of futures, hence allows awaiting
differently typed futures in a single call.

A C++11 and C++03 based implementation have been added.

This patch also includes tests on those new overrides.

Review: https://reviews.apache.org/r/18311