Add explicit methods / parameters to the zmq relay

That makes things easier to use (otherwise you need to use keyword arguments
for everything when you're sending data)
Add an has_errors_or_failure property for collector.

that's better to put the logic here rather than in the runner class.
Use the collector as the result object.
Disembiguate TestResult and Collector.

They were both here for the same purpose so now there is only one.  It will
also change name in the future to probably named test_results or
results_collector.
Add support for the output.

The output objects are now observing the collector and are notified as soon as
something happens there, using their "push" method.

I'm not sure that's actually the best way to send them information, feel free
to change this if you can find something better, but that will do for now.
Rename collector in test_result.

It seems that's the name nose and unittest chose so that hopefully make things
clearer to the person trying to understand what's going on while reading the
code.
pep8 changes
Call startTestRun and stopTestRun in the test case.
Make the outputs work.