Add Popen helper classes

The `PopenPipeReactor` class uses threads to perform non-blocking reads on a
process's `stdout` and `stderr` pipes.  When the `communicate` method is
called, a loop is started, which performs interleaved reads from `stdout` and
`stderr`, printing the data to the corresponding system pipe (i.e, `stdout` or
`stderr`).  Handling of the `stdout` and `stderr` data is done by callbacks to
the methods `on_stdout` and `on_stderr`.  This makes it straight-forward to
subclass to perform custom handling of pipe data.

The `PopenZmqOutput` class extends `PopenPipeReactor`, and implements the
methods `on_stdout` and `on_stderr`, which publish any updates to the specified
ZeroMQ socket.
Convert all print statements to proper logging

Set the default logging level to `logging.INFO`.