Don't dlclose libperfetto_android_internal.so once loaded

Prior to this CL:
1) the internal .so was lazily loaded the first time a process
   needed to access a non-NDK function.
2) It was unloaded once done

2 turns out to be particularly problematic because causes all
sorts of FD leaks. Most libraries don't handle dlcose() proprely.
This CL cleans up a bit the dlopn mechanism, centralizing it in
one place and never dlcloses the opened library once loaded.


Test: manual (using android.power)
Bug: 137280403
Change-Id: I21006ebafb35a063c0ca5c9c2d370c049fb27eb8
diff --git a/Android.bp b/Android.bp
index 52d9186..92c6af6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -259,6 +259,7 @@
     ":perfetto_protos_perfetto_trace_trusted_lite_gen",
     ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ipc_wire_protocol_gen",
+    "src/android_internal/lazy_library_loader.cc",
     "src/base/event_fd.cc",
     "src/base/file_utils.cc",
     "src/base/metatrace.cc",
@@ -597,6 +598,7 @@
     ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ipc_wire_protocol_gen",
     ":perfetto_src_perfetto_cmd_protos_gen",
+    "src/android_internal/lazy_library_loader.cc",
     "src/base/android_task_runner.cc",
     "src/base/event_fd.cc",
     "src/base/file_utils.cc",
@@ -776,6 +778,7 @@
     ":perfetto_protos_perfetto_trace_trusted_lite_gen",
     ":perfetto_protos_perfetto_trace_zero_gen",
     ":perfetto_src_ipc_wire_protocol_gen",
+    "src/android_internal/lazy_library_loader.cc",
     "src/base/android_task_runner.cc",
     "src/base/event_fd.cc",
     "src/base/file_utils.cc",
@@ -3400,6 +3403,7 @@
     ":perfetto_src_protozero_testing_messages_zero_gen",
     ":perfetto_src_traced_probes_ftrace_test_messages_lite_gen",
     ":perfetto_src_traced_probes_ftrace_test_messages_zero_gen",
+    "src/android_internal/lazy_library_loader.cc",
     "src/base/android_task_runner.cc",
     "src/base/circular_queue_unittest.cc",
     "src/base/copyable_ptr_unittest.cc",