Allow output matcher to capture output of a child process

The output matcher doesn't capture the output of spawned child processes even if they share standard streams with the parent process. I noticed the issue when the following test wouldn't pass:

```ruby
expect {                                                                                                                                                                                          
  Process.waitpid(spawn("echo foo"))                                                                                                                                                              
}.to output("foo").to_stdout
```

This solution uses a `Tempfile` instead of a `StringIO` so it can be inherited by child processes.

I haven't looked too deeply into it, but it may also be the start of a solution to https://github.com/rspec/rspec-expectations/issues/642 since ostensibly tempfile name generation is thread-safe.

Also note that this requires changes to `StdErrSplitter` in rspec-support, which I will PR in a minute.
I'm noticing some duplication where each place we include the `output_to_stream` shared group we also have `it_behaves_like("an RSpec matcher", ...)`.  I think we could reduce the duplication and move the inclusion of the `an RSpec matcher` group into the `output_to_stream` group so that it is automatically included for all cases.  You'd need to define `valid_value` and `invalid_value` in terms of the `print_to_stream` helper method but that should be doable, I think.

Thoughts?