profiling: Add missing pieces to heapprofd.

* Allow several heap dumps using the same call graph tree.
* Add main loops for worker threads.
* Add queue between worker threads.
* Add client functions for sending the stack.

Change-Id: I5d66b6199ab72467e43335df257c08825c2d2228
diff --git a/Android.bp b/Android.bp
index 9365d34..8edd08a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3849,8 +3849,10 @@
     "src/perfetto_cmd/rate_limiter_unittest.cc",
     "src/profiling/memory/bookkeeping.cc",
     "src/profiling/memory/bookkeeping_unittest.cc",
+    "src/profiling/memory/bounded_queue_unittest.cc",
     "src/profiling/memory/client.cc",
     "src/profiling/memory/client_unittest.cc",
+    "src/profiling/memory/heapprofd_integrationtest.cc",
     "src/profiling/memory/record_reader.cc",
     "src/profiling/memory/record_reader_unittest.cc",
     "src/profiling/memory/socket_listener.cc",
@@ -3859,6 +3861,7 @@
     "src/profiling/memory/string_interner_unittest.cc",
     "src/profiling/memory/unwinding.cc",
     "src/profiling/memory/unwinding_unittest.cc",
+    "src/profiling/memory/wire_protocol.cc",
     "src/protozero/message.cc",
     "src/protozero/message_handle.cc",
     "src/protozero/message_handle_unittest.cc",