Print stderr lines to parent stderr as they are emitted
The stderr lines from the command are put into a buffer and printed to the stderr of the parent process if the command succeeds. The idea was to be able to capture them and add them to the error message if the command fails. However, this means they are reported out of order relative to the stdout lines. The idea was to avoid them being displayed twice. However, I don't think it's worth sacrificing the order for this optimization.
The stderr lines should be passed through to the stderr of the parent process unless silent is true. If the command fails, these lines should still be added to the error message.
If the duplication presents an issue, we can reconsider the proposed this behavior.