base: Add PeriodicTask with timerfd support

This CL adds a base::PeriodicTask helper class which
does two things:
1. Wraps the logic necessary for periodic task execution
   taking care of related subtleties (e.g., cancelling
   outstanding tasks after reset/dtor).
2. Optionally supports suspend-aware timers. This is only
   supported on Linux/Android using timerfd on CLOCK_BOOTTIME.

Bug: 185346474
Test: perfetto_unittests --gtest_filter=PeriodicTaskTest*
Change-Id: I1574898a54f254df17a9436b239dcbc401c1fcd3
diff --git a/Android.bp b/Android.bp
index a0839b9..e7c13d4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -6658,6 +6658,7 @@
     "src/base/logging.cc",
     "src/base/metatrace.cc",
     "src/base/paged_memory.cc",
+    "src/base/periodic_task.cc",
     "src/base/pipe.cc",
     "src/base/status.cc",
     "src/base/string_splitter.cc",
@@ -6702,6 +6703,7 @@
     "src/base/no_destructor_unittest.cc",
     "src/base/optional_unittest.cc",
     "src/base/paged_memory_unittest.cc",
+    "src/base/periodic_task_unittest.cc",
     "src/base/scoped_file_unittest.cc",
     "src/base/string_splitter_unittest.cc",
     "src/base/string_utils_unittest.cc",