Add a new `test_options.tags` attribute to customize test execution

The `test_options.tags` attribute provides additional metadata to
customize test execution by downstream test runners. The tags have no
special meaning to Soong.

Bug: 240928948
Test: manually add `test_options.tags` attribute and run:
    $ refreshmod && \
      cat out/target/product/generic/module-info.json |\
      grep <tags>
Change-Id: I35267f6608e48c6184e56530ef128d93b2f97522
diff --git a/android/module.go b/android/module.go
index bf62080..1cf5955 100644
--- a/android/module.go
+++ b/android/module.go
@@ -942,12 +942,19 @@
 	// If the test is a hostside (no device required) unittest that shall be run
 	// during presubmit check.
 	Unit_test *bool
+
+	// Tags provide additional metadata to customize test execution by downstream
+	// test runners. The tags have no special meaning to Soong.
+	Tags []string
 }
 
 // SetAndroidMkEntries sets AndroidMkEntries according to the value of base
 // `test_options`.
 func (t *CommonTestOptions) SetAndroidMkEntries(entries *AndroidMkEntries) {
 	entries.SetBoolIfTrue("LOCAL_IS_UNIT_TEST", Bool(t.Unit_test))
+	if len(t.Tags) > 0 {
+		entries.AddStrings("LOCAL_TEST_OPTIONS_TAGS", t.Tags...)
+	}
 }
 
 // The key to use in TaggedDistFiles when a Dist structure does not specify a