Android: Use turbine to generate java headers (Reland)

See go/faster-javac for a detailed analysis of why turbine was chosen to
speed up our java builds. The current implementation is an initial
implementation that can be further optimized. It already gives savings
of 10-30% of our java incremental builds depending on the target in
question (see go/project-turbo for timing details).

This implementation does remove some of the benefits of the previous way
that java_library_impl was implemented, namely when a target's
.interface.jar file changes, it no longer short-circuits dependent
targets from being built since we now use group(target_name). This is
arguably more correct as prebuilts depend on javac jars directly. In the
future (after the androidx migration and other build improvements) this
can be improved by having prebuilts depend on the interface jars
instead.

Original CL: https://crrev.com/c/2105415

Fixed jacoco instrument not having header deps.

Bug: 1056299, 1062704
Change-Id: I9a6c3242a04c6c57bb3c8f5bb7542c5a4301d1b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2110431
Reviewed-by: Peter Wen <[email protected]>
Reviewed-by: Andrew Grieve <[email protected]>
Commit-Queue: Peter Wen <[email protected]>
Auto-Submit: Peter Wen <[email protected]>
Cr-Commit-Position: refs/heads/master@{#751777}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index efde999e..d19b670 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -1337,6 +1337,7 @@
     'build/android/gyp/merge_manifest.pydeps',
     'build/android/gyp/prepare_resources.pydeps',
     'build/android/gyp/proguard.pydeps',
+    'build/android/gyp/turbine.pydeps',
     'build/android/gyp/validate_static_library_dex_references.pydeps',
     'build/android/gyp/write_build_config.pydeps',
     'build/android/gyp/write_native_libraries_java.pydeps',