Calculate pending test count based on list of tests.

While tests are running an intermediate progress string is rendered
which looks like "Running, <n> complete, <m> remaining". Of this, the
number of completed tests were being determined based on the number of
invocations of Output.show_status(). Instead calculate the completed
test count based on the difference between number of known tests and
number of tests that are pending.
Monitor worker test progress rather than set a shorter timeout.

The timeout for a worker test harness was set to be
<client-document's-timeout> * <a-fixed-multiplier>. Since this was
arbitrary and likely to cause flaky behavior, this change allows the
client document's testharness to monitor tests running inside a worker,
and then mark them as timedout when the client document times out.

In order to distinguish between test that were not run at all and test
that were timed out, a notification is sent by a worker testharness
indicating when a test starts.

Introduces RemoteWorker and changes to RemoteTest that better abstract
the communication between a remote worker and the primary testharness.