Pass extra arguments of run-swarmed.py to the test runner

This CL adds a positional argument that captures all arguments not
specified and passes them to the test runner. This decouples the
argument sets and avoid replicating arguments from the test runner in
run-swarmed.py.

The motivation is to support test annotation filters in
run-swarmed.py. This is useful, for example, to run batched Android
tests (e.g. "-A Batch=UnitTests").

The existing arguments are left alone, marked as deprecated, to
prevent breakages of existing usage.

This CL also does basic error handling when an exception is raised in
_Spawn().

Bug: 1255206
Change-Id: Ic83ad5e735e9d194b3d3ed269229eca97ee7fd76
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3247894
Commit-Queue: Henrique Nakashima <[email protected]>
Reviewed-by: Nico Weber <[email protected]>
Cr-Commit-Position: refs/heads/main@{#940429}
diff --git a/docs/win_cross.md b/docs/win_cross.md
index bc6d9e0..49272eec 100644
--- a/docs/win_cross.md
+++ b/docs/win_cross.md
@@ -104,7 +104,7 @@
 
 You can run the Windows binaries you built on swarming, like so:
 
-    tools/run-swarmed.py out/gnwin base_unittests [ --gtest_filter=... ]
+    tools/run-swarmed.py out/gnwin base_unittests -- [ --gtest_filter=... ]
 
 See the contents of run-swarmed.py for how to do this manually.