Implement and integrate NewRunner function
Check if command is run when exiting
Reset stdoutbuf BEFORE running a command
Read STDOUT and STDERR channels until both are closed

The behaviour before was simply wrong and caused problems. It might
happen that stderrch was closed before the stdoutch, which lead to a
return in the goroutine. That means stdoutch was still blocking on the
sender end (in Runner.streamOutput()), which in turn caused the
streaming of stdout to never finish, which lead to Runner.Wait() hanging
infinitely.
Use Add(2) instead of two Add(1) for WaitGroup

This makes me feel safer.