Convert android_app and android_test's module-info.json to soong

This produces the following diffs, which I beleive are benign:
https://paste.googleplex.com/5631028455276544

We need to convert these to soong so that you can run these tests
with atest in soong-only builds.

Bug: 389720048
Test: diff'd out/target/product/vsoc_x86_64/module-info.json
Change-Id: Ic25e14d2cfbb56d9527302baefa6f69f55f113ee
diff --git a/android/module.go b/android/module.go
index c81380e..da75416 100644
--- a/android/module.go
+++ b/android/module.go
@@ -2145,6 +2145,22 @@
 			}
 		}
 
+		// M(C)TS supports a full test suite and partial per-module MTS test suites, with naming mts-${MODULE}.
+		// To reduce repetition, if we find a partial M(C)TS test suite without an full M(C)TS test suite,
+		// we add the full test suite to our list. This was inherited from
+		// AndroidMkEntries.AddCompatibilityTestSuites.
+		suites := ctx.moduleInfoJSON.CompatibilitySuites
+		if PrefixInList(suites, "mts-") && !InList("mts", suites) {
+			suites = append(suites, "mts")
+		}
+		if PrefixInList(suites, "mcts-") && !InList("mcts", suites) {
+			suites = append(suites, "mcts")
+		}
+		ctx.moduleInfoJSON.CompatibilitySuites = suites
+
+		required := append(m.RequiredModuleNames(ctx), m.VintfFragmentModuleNames(ctx)...)
+		required = append(required, ctx.moduleInfoJSON.ExtraRequired...)
+
 		ctx.moduleInfoJSON.core = CoreModuleInfoJSON{
 			RegisterName:       m.moduleInfoRegisterName(ctx, ctx.moduleInfoJSON.SubName),
 			Path:               []string{ctx.ModuleDir()},
@@ -2154,7 +2170,7 @@
 			TargetDependencies: targetRequired,
 			HostDependencies:   hostRequired,
 			Data:               data,
-			Required:           append(m.RequiredModuleNames(ctx), m.VintfFragmentModuleNames(ctx)...),
+			Required:           required,
 		}
 		SetProvider(ctx, ModuleInfoJSONProvider, ctx.moduleInfoJSON)
 	}
@@ -2266,7 +2282,7 @@
 	arches = slices.DeleteFunc(arches, func(target Target) bool {
 		return target.NativeBridge != ctx.Target().NativeBridge
 	})
-	if len(arches) > 0 && ctx.Arch().ArchType != arches[0].Arch.ArchType {
+	if len(arches) > 0 && ctx.Arch().ArchType != arches[0].Arch.ArchType && ctx.Arch().ArchType != Common {
 		if ctx.Arch().ArchType.Multilib == "lib32" {
 			suffix = "_32"
 		} else {