Save both STDOUT and STDERR when possible

Create an Output object that stores the returned output and error
streams from the executed commands. Because only Process.spawn and
Posix.spawn use pipes like this, they are the only two Runners that can
handle capturing both STDOUT and STDERR. The PopenRunner can only handle
one pipe, and backticks can only report on STDOUT.