Allow external runners

This allows external runners to work with loads.

- Agents communicate with workers via a ZMQ push/pull socket
- It's possible to pass a CWD to the workers so they know where to look for the tests
- Wait all the agents before stoping the main IO loop.