Combine async slices in a single track

We want to show many async slices on a single UI track, to
do this we need to pick a vertical position for each
'island' of slices so that slices don't overlap but also
minimising vertical space where possible.

It do this this efficiently we expose a new dynamic table,
experimental_slice_layout. This is based on the slice table
and exposes two new columns: filter_track_ids and layout_depth.

filter_track_ids takes a comma separated list of track_ids which
we want to layout. There must be a constraint on filter_track_ids.
layout_depth reports the vertical position for each slice.

Change-Id: I53d98c68a328cd98c80e2f392d6b4955d9903bac
diff --git a/BUILD b/BUILD
index 5080adb..c405577 100644
--- a/BUILD
+++ b/BUILD
@@ -900,6 +900,8 @@
         "src/trace_processor/dynamic/experimental_counter_dur_generator.h",
         "src/trace_processor/dynamic/experimental_flamegraph_generator.cc",
         "src/trace_processor/dynamic/experimental_flamegraph_generator.h",
+        "src/trace_processor/dynamic/experimental_slice_layout_generator.cc",
+        "src/trace_processor/dynamic/experimental_slice_layout_generator.h",
         "src/trace_processor/read_trace.cc",
         "src/trace_processor/trace_processor.cc",
         "src/trace_processor/trace_processor_impl.cc",