update the internals documentations about the runners
update the ZMQ APIs documentation
Remove self.loop = None from the distributed agent.
Make calls to startTestRun and stopTestRun optional.

They're not needed if we're in "managed" mode (e.g. when the runner is actually
in a separate process, because startTestRun / stopTestRun are in this case
called by the parent process)
Document and reorganize runner.py
Use the "externally_managed" option.

When we have an external python runner.
Make workers report to the broker.

We don't need to have them talk to the agent anymore, since this was to count
the number of started / finished tests and this is now being handled by the
test runner itself.
Add an external runner.

This runner uses a subprocess to do the actual job.