First stab at a main loop
Wait for command to finish when exiting
Make Ctrl-D with long running commands work
New runner per command run, waitgroups

No data race, except a really rare race:

==================
WARNING: DATA RACE
Read by goroutine 73:
  os/exec.(*Cmd).Wait()
      /usr/local/go/src/pkg/os/exec/exec.go:307 +0x11e
  main.(*Runner).Wait()
      fzz/runner.go:96 +0x89
  main.(*Runner).KillWait()
      fzz/runner.go:89 +0x8c
  main.func·002()
      fzz/fzz.go:149 +0x145

Previous write by goroutine 72:
  os/exec.(*Cmd).Wait()
      /usr/local/go/src/pkg/os/exec/exec.go:310 +0x1ed
  main.(*Runner).Wait()
      fzz/runner.go:96 +0x89
  main.(*Runner).KillWait()
      fzz/runner.go:89 +0x8c
  main.func·002()
      fzz/fzz.go:149 +0x145

Goroutine 73 (running) created at:
  main.mainLoop()
      fzz/fzz.go:151 +0xa11
  main.main()
      fzz/fzz.go:237 +0xdfa

Goroutine 72 (finished) created at:
  main.mainLoop()
      fzz/fzz.go:151 +0xa11
  main.main()
      fzz/fzz.go:237 +0xdfa
==================
Found 1 data race(s)
Remove useless line, print errors with Printer
Use stdinbuffer for new runners again
Remove debugging via trace.log
Declare stdoutbuf as pointer
Do not write stderr to stdoutbuffer
Use one goroutine for printing stdout and stderr
Remove now unneeded select statement
Remove or fix runner tests
Use copy of input length in goroutine

Access to the input slice from inside the goroutine and the main routine
leads to a data race.
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.
Give each Runner its own stdout buffer

This avoids race conditions between goroutines still writing to the
global stdoutbuffer and the main goroutine resetting it.
Use correct input for printing prompt