Two problems here:

1) This changes the semantic of the library, so now some tests are failing (you can run them by doing `rake`)
2) When the process fails, stdout is not relevant. When the process succeeds, stderr is not relevant. I may be convinced that they should  be passed anyway, but in that case I would like `fail(stderr, stdout, status)` and `succeed(stdout, stderr, status)` instead to emphasize what you most likely want.