Add `WorkerPoolSpy` for testing code that uses `DatWorkerPool`

This adds a simple worker pool spy for use as a test-double. This
is useful when testing code that uses `DatWorkerPool`. The spy
can be stubbed in as a replacement for a `DatWorkerPool` instance.
It will act similar to `DatWorkerPool` and will "track" what was
done to the worker pool.