Bug 987398 - Part 1: Run mochitests from manifests with mach; r=ahal

The mochitest mach commands now consult the all-tests.json file for
resolving the test argument/path. The mochitest runner has been modified
to accept a manifestdestiny.TestManifest instance instead of a path to a
manifest file. The mach commands construct an in-memory TestManifest and
pass it to the mochitest runner.

While I was here, I cleaned up some old JSON serializing code.

--HG--
extra : rebase_source : 886b13d4cb35992c132bc3051925424609a5fdf8
Bug 987398 - Part 2: Handle install-to-subdir in TestResolver; r=ahal

--HG--
extra : rebase_source : e30ea6ba895bbccda95b57c39648798dd26388de
Bug 987414 - Pass multiple test arguments to mach testing commands; r=ahal

Previously, mach xpcshell-test and mochitest-* were limited to a single
test "path" argument. This patch enables multiple arguments to be passed
in.

TestResolver in the build system has gained the ability to process
multiple paths in a single invocation. The mach commands have been
modified to utilize this new feature.

Only mach code paths that pass manifestdestiny.TestManifest instances
into the test runner can accept multiple arguments. This is because
there is no other way to pass a custom set of tests into the test
runner. If multiple test arguments are used but not supported, a warning
is emitted.

--HG--
extra : rebase_source : 1ce1328a969f654e7b43a7a0bdd15ed86f5ceb21