Fix subcommand as argument. Make whitespace handling more rigorous.

The command-as-an-argument support was entirely broken, as far as I can see.
Testing it was tricky without fixing up whitespace handling.
The .stdout (and .stderr) property now contains the *exact* contents retrieved from the subprocess.

Values returned from other methods are essentially unchanged.