* changed reset() to a clone() for CommandChain and the ManagedCmd to
  avoid races
* added channels and a reader interface on the ProcessInput's output
modified the error handling to create new Error structs so that tests can compare string outputs