threading: add Future<T>/Stream<T> helpers for Channel<T> and ThreadPool

A very common use of Futures is for representing which is happening
across a thread boundary. A Channel is a perfect way to pass data
across thread boundaries. base::ThreadPool allows running computation
on another thread without worrying about

These helper functions:
a) utilise Future/Streams and Channel to elegantly represent message
passing between threads
b) allow running computations on a ThreadPool and returning the result
as a Future or Stream when the computation completes

Change-Id: Ie6c9d12208c6fe5b4b1b6f54290a39da0d514b0c
diff --git a/Android.bp b/Android.bp
index 1e6f23b..0a016e8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -8208,6 +8208,7 @@
         "src/base/threading/future_unittest.cc",
         "src/base/threading/stream_unittest.cc",
         "src/base/threading/thread_pool_unittest.cc",
+        "src/base/threading/util_unittest.cc",
     ],
 }