Call the methods on the TestRunner only if it exists.
Make sure all the test runs are finished before stopping the loop.
Add a way to change the working directory on the agent.
Only resolve the name of the test if we're using the default python runner
Make the workers report to the agents.

This means into other things, that a new ZMQ socket is opened between the
agents and the workers. Before this changeset, workers were reporting directly
to the broker.

This change allows to filter which kind of messages you want to pass to the
broker, at the agent level.

Especially, the agent filters the "startTestRun" and "stopTestRun" in a way
such that there is only one of them sent per agent, per run. The distributed
test runner can then count how many runs are done, and when they're complete,
can stop the main ioloop and give back the control to the user.

This commit also changes the way we control the inner processes in the runner.
We were using .poll() before and now we're relying on psutil.is_running() which
provides us a unified interface to deal with processes.
Mock the socket during the ZMQRelay tests
Remove unused imports
remove extra parenthesis
rename publisher to push
Merge pull request #76 from mozilla-services/allow-external-runners

Allow external runners