introduce ThreadTaskRunner and use it in heapprofd's UnwindingWorker

As discussed last week, proposing a wrapper object that owns a UnixTaskRunner & its task thread.

For the review, please focus on the following:
* that the writeup of the thread-checking considerations in unix_task_runner.h is accurate
* that the thread_task_runner implementation itself is sane
* that its use in heapprofd is reasonable

I have no strong opinions on the following, and simply chose one option for the initial review:
* Naming of the new utility - ThreadUnixTaskRunner would more accurately reflect that this isn't
  cross-platform?
* Whether it belongs in base::, or should be in profiling::memory:: for now.
  We can slot this into consumer_api.cc (which does a very similar handshake) in a followup cl,
  so I thought base:: might be a reasonable place.

Note: with this change, heapprofd works in debug builds e2e afaict.

Change-Id: Ia12c89c6963bf0a659bca7994f4fe87aa3bfde58
diff --git a/Android.bp b/Android.bp
index f780212..256e440 100644
--- a/Android.bp
+++ b/Android.bp
@@ -47,6 +47,7 @@
     "src/base/string_view.cc",
     "src/base/temp_file.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_socket.cc",
     "src/base/unix_task_runner.cc",
@@ -162,6 +163,7 @@
     "src/base/string_view.cc",
     "src/base/temp_file.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_socket.cc",
     "src/base/unix_task_runner.cc",
@@ -228,6 +230,7 @@
     "src/base/string_view.cc",
     "src/base/temp_file.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_socket.cc",
     "src/base/unix_task_runner.cc",
@@ -406,6 +409,7 @@
     "src/base/string_view.cc",
     "src/base/temp_file.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_socket.cc",
     "src/base/unix_task_runner.cc",
@@ -576,6 +580,7 @@
     "src/base/test/utils.cc",
     "src/base/test/vm_test_utils.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_socket.cc",
     "src/base/unix_task_runner.cc",
@@ -2581,6 +2586,7 @@
     "src/base/string_view.cc",
     "src/base/temp_file.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_socket.cc",
     "src/base/unix_task_runner.cc",
@@ -2827,6 +2833,8 @@
     "src/base/test/vm_test_utils.cc",
     "src/base/thread_checker.cc",
     "src/base/thread_checker_unittest.cc",
+    "src/base/thread_task_runner.cc",
+    "src/base/thread_task_runner_unittest.cc",
     "src/base/time.cc",
     "src/base/time_unittest.cc",
     "src/base/unix_socket.cc",
@@ -3092,6 +3100,7 @@
     "src/base/string_view.cc",
     "src/base/temp_file.cc",
     "src/base/thread_checker.cc",
+    "src/base/thread_task_runner.cc",
     "src/base/time.cc",
     "src/base/unix_task_runner.cc",
     "src/base/virtual_destructors.cc",