Implements a process that can be monitored and interacted with.
StandardOut and StandardError are monitored at character and line level and
made visible by thread safe accessors.
StandardIn is writable via SetInput.
Is there a standard implementation of this somewhere that I do not know about?
It seems like a common enough requirement for legacy interop.