Moved stream capturing out of the shell into the base matcher.

This is unfortunately the only reliable way of capturing I/O.  If output
is somehow driven through a mechanism other than a method in
Thor::Shell::SHELL_DELEGATED_METHODS, which unfortunately seems possible
in some setups, it doesn't get captured.