in the worker code pipe should really be called channel as it's not a raw pipe object
fix abstraction failure: the framework-specific worker result text parsing should be in the framework-specific worker classes
standardise debug logging of master <-> runner <-> worker activity a bit more - log from the master rather than making an extra network trip to send the log.  rename "next" command to the master to "next_file" as it can now be a straight passthrough from the worker.