New Dagger Compiler Validations

1) explicitBindingConflictsWithInject
  Ensures that a class marked with @Inject does not also have an
  @Provides elsewhere. The code had one case of this,
  `UnfoldLatencyTracker`, which has been moved into the subcomponent
  where it is used.

2) strictMultibindingValidation
  Ensures that parent components can't multibind things into their
  children (the opposite is allowable). We had one case where
  `UnfoldTraceLogger` was being multibound into the @SysUISingleton
  scope from the @Singleton scope.

Also split CoroutinesModule into GlobalCoroutinesModule and
SysUICoroutinesModule.
GlobalCoroutinesModule contains our @Application and @Main
related items that are common across the process.

SysUICoroutinesModule contains the @Background related items that are
specific to the SystemUI side of the process.

Flag: NA
Test: built and run
Fixes: 154740484
Change-Id: I0aef5464000d30b27097ddaed9548d128bedccf6
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 80656e9..a322b55 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -214,6 +214,8 @@
 
     javacflags: [
         "-Adagger.fastInit=enabled",
+        "-Adagger.explicitBindingConflictsWithInject=ERROR",
+        "-Adagger.strictMultibindingValidation=enabled",
         "-Aroom.schemaLocation=frameworks/base/packages/SystemUI/schemas",
     ],
     kotlincflags: ["-Xjvm-default=all"],