output from subprocesses can be gathered in realtime

- the previous attempt at real time logging for subprocesses was woefully inadequate and this rectifies that by spawning threads to monitor stdout and stderr which post lines to a queue