Add --all-<type> options to testrunner

It is sometimes useful to test all combinations of a subset of
options. This adds the ability to do so by using a '--all-<type>'
option that acts like passing in every flag of the given type. For
example passing `--all-gc` acts like passing `--gcstress --cms
--gcverify`.

Test: ./test/testrunner/testrunner.py --host --all-gc --all-compiler --host -t 001-HelloWorld
Change-Id: I13662194b3ba9e2cd55d9ed2e2974d5f306d9b5c
diff --git a/test/testrunner/testrunner.py b/test/testrunner/testrunner.py
index 578e885..5540544 100755
--- a/test/testrunner/testrunner.py
+++ b/test/testrunner/testrunner.py
@@ -977,11 +977,21 @@
     var_group = parser.add_argument_group(
         '{}-type Options'.format(variant_type),
         "Options that control the '{}' variants.".format(variant_type))
+    var_group.add_argument('--all-' + variant_type,
+                           action='store_true',
+                           dest='all_' + variant_type,
+                           help='Enable all variants of ' + variant_type)
     for variant in variant_set:
       flag = '--' + variant
       var_group.add_argument(flag, action='store_true', dest=variant)
 
   options = vars(parser.parse_args())
+  # Handle the --all-<type> meta-options
+  for variant_type, variant_set in VARIANT_TYPE_DICT.items():
+    if options['all_' + variant_type]:
+      for variant in variant_set:
+        options[variant] = True
+
   if options['build_target']:
     options = setup_env_for_build_target(target_config[options['build_target']],
                                          parser, options)