Bring in compatibility shims for CommandLine from upstream

In order to support building with JDK21, Kythe needs to be able
to deal with the move of CommandLine from
com.sun.tools.javac.main to jdk.internal.opt, This change brings
in the service loader infrastructure that can deal with this.
Until we switch to JDK21 we will use the fallback (reflective)
mechanism. Once JDK21 is in place, we can also enable the 21
compatibility implementation.

Bug: 313924276
Test: prebuilts/build-tools/build-prebuilts.sh  --skip-go --skip-asan \
          --skip-soong-tests --resume
Test: java --add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \
        --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \
        --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
        --add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
        --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
        --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
        --add-exports=jdk.internal.opt/jdk.internal.opt=ALL-UNNAMED \
        -jar ./out/soong/dist-common/framework/javac_extractor.jar \
        # Using JDK11, JDK17 and JDK21
Change-Id: I10bae91e1203b919b6ca3012b208c01ea904ac76
11 files changed