remodel the command's "run data" as a "child process" object

This is a more appropriate name for the data and behavior this is
encapsulating.  This allows the same access to the child process'
data and allows us to abstract child process handling behavior
in this object.

This is just an implementation cleanup - no behavior changes.