ui: introduce new flamegraph widget and use it for java heap dumps

This CL introduces a new flamgraph widget which is far superior to the
existing flamgraph implementation in many ways:
- supports filtering stacks/frames
- sources data from any arbitrary source, not use hardcoded use of
  experimental_flamgraph
- improves the UX for hover
- collapses linked lists (and other recursive data structures) down
  instead of arbitrarily truncating

This CL also starts using this widget in the Java heap graph details
panel as that was the use-case which is suffering the most right now.
For example, the runtime of a dominator tree flamegraph has been
cut from multiple minutes to 5s.

Also while I'm here, improve the heap profile track query as well to
be significantly better.

Change-Id: Ib8444b642e78e69b041adde716976c2f3822c92f
diff --git a/Android.bp b/Android.bp
index 7bd6f16..6de0fdc 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13244,6 +13244,7 @@
         "src/trace_processor/perfetto_sql/stdlib/time/conversion.sql",
         "src/trace_processor/perfetto_sql/stdlib/v8/jit.sql",
         "src/trace_processor/perfetto_sql/stdlib/viz/core_type.sql",
+        "src/trace_processor/perfetto_sql/stdlib/viz/flamegraph.sql",
         "src/trace_processor/perfetto_sql/stdlib/viz/summary/counters.sql",
         "src/trace_processor/perfetto_sql/stdlib/viz/summary/processes.sql",
         "src/trace_processor/perfetto_sql/stdlib/viz/summary/slices.sql",