Support coroutine tracing in sysui

Also,

 - Replace CoroutineDispatcher in CoroutinesModule with
   CoroutineContext.

 - Use different CoroutineContext in ConditionalRestarter to avoid
   dependency cycle in CoroutinesModule when referencing
   FeatureFlagsClassic.

Test: adb shell cmd statusbar flag coroutine_tracing off \
  adb shell setprop log.tag.TraceUtils V \
  adb logcat -s 'TraceUtils' \
  1) Ensure no log messages appear when trace isn't being captured, and
  2) Capture perfetto trace, ensure log message appears saying
     "Experimental flag COROUTINE_TRACING is off."

Test: Turn flag on, use new traceCoroutine API on a "@Main
  CoroutineDispatcher", capture perfetto trace, ensure log message says
  "Current CoroutineContext is missing TraceContextElement."

Test: Turn flag on, capture perfetto trace, take a screenshot, ensure
  trace sections for "RequestProcessor#..." show the events on the
  thread the coroutine is executing on, that they stop when the
  coroutine is suspended, and they start again when it's resumed.

Flag: LEGACY COROUTINE_TRACING DISABLED
Test: SystemUITests
Bug: 289353932
Change-Id: I7a5a4b697e93da73b271fb7c3966df8fc7cc5d15
16 files changed