Emit complete when all results are collected.

Replaces previous algorithm that emits complete when all
tests have been dispatched. This should fix bugs where some
tests are not accounted for in a batch.

Introduces Tests collection, which contains Test objects.
Also introduces their null counterparts, which are used to
generate URLs when no Tests are yet assigned.