base: add Channel abstraction for passing objects between threads

This CL adds base::Channel<T> which is a lightweight mechanism to
implement message passing between threads. The intention of this class
is to compose well with base::TaskRunner, allow task runner watches
to fire when the channel can be written to/read from.

Change-Id: I9f8e4ccfd9472c7122133e0f59023ad940a6e7c0
diff --git a/Android.bp b/Android.bp
index 2de8862..adabe72 100644
--- a/Android.bp
+++ b/Android.bp
@@ -8139,6 +8139,7 @@
 filegroup {
     name: "perfetto_src_base_threading_unittests",
     srcs: [
+        "src/base/threading/channel_unittest.cc",
         "src/base/threading/thread_pool_unittest.cc",
     ],
 }