Don't conflate stdout and stderr; run commands once

It was previously that if one asserted something about a command's stdout, then
asserted something about the stderr, the 2nd assertion, the one about stderr,
would actually compare to stdout.

Also, each assertion (about the exit status, stdout, stderr), would run the
command each time. Very problematic for commands that are expensive to execute,
or have side effects.

I also added an `exit_status` method to `Command`. The use case is to make assertions other than equality on the exit status, such as against a particular bit being set:

```ruby
expect(subject.exit_status & 2).to be_zero
```