This class has virtual methods and therefore should have a virtual destructor.
This class provides a RunProcess method to run a child process and send its output to an abstract parsing interface. This also provides a simple line parser and logger implementing the parsing interface.