trace_processor: implement string pooling class

This CL introduces string pooling functionality to the trace processor
backed by PagedMemory.
This class uses fixed pages of memory with the following
properties:
1. On 64-bit machines, we mmap a 4GB chunk of memory and then use the
offset into this chunk as the StringId.
2. On 32-bit machines, we mmap 32MB chunks (this is because the UI will
malloc anything we mmap so we want to be conservative). The raw pointer
is then used directly as the StringId.

The use of this class inside the trace processor will be carried out
in a follow up CL.

Change-Id: Id1ede4e626b0ec65041be7177a08d3b1fcdbdbbc
diff --git a/Android.bp b/Android.bp
index 54a9d23..320c21a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3165,6 +3165,7 @@
     "src/trace_processor/storage_columns.cc",
     "src/trace_processor/storage_schema.cc",
     "src/trace_processor/storage_table.cc",
+    "src/trace_processor/string_pool.cc",
     "src/trace_processor/string_table.cc",
     "src/trace_processor/table.cc",
     "src/trace_processor/thread_table.cc",