Simplify the bouncer API

Simplified bouncer API requires one helper lookup per NetTest.
Fix some issues with ooni.deck

1. Do not require a bouncer to use a deck
2. If a bouncer is used, also fetch collectors for tests that
   do not list helpers or already have helpers specified in the deck.
Add CouldNotFindTestCollector error
Link TaskManagers by Least Available Slots

A LinkedTaskManager only has availableSlots if its child TaskManager
also has availableSlots. Children LinkedTaskManagers must notify the
parent LinkedTaskManager when a task is complete because the task
queue is event-driven.
Reschedule failures immediately

Reschedule failures immediately so they do not accrue at the end
of the task list and eat memory.
Track the number of failures, not the instances.

The number of failures on very large scans (1m hosts) results in
a large list. This commit tracks the number of failures instead
of the objects.
Fix report write failure bug

When a report has opened, and then a reporter has subsequently failed,
it is now removed from the list of valid reporters.
Track the number of failed reporters