Add Distribution.Compat.CreatePipe
Refactor test runners

The test runners for exitcode-stdio and detailed tests will be separated
into their own modules. They cannot share a test runner because
'--show-details=streaming' does not make sense for detailed tests the
way they are implemented now. The detailed test runner needs to be
substantially rewritten anyway, so splitting up the test runners will
eventually accomodate that goal.
Implement '--show-details=streaming' for ExeV10 tests

LibV09 tests are still non-streaming because those tests do not use
stdout anyway.
Makefile: build setup with -threaded
Disable stdout buffering in test suites

This is a workaround to enable streaming test logs in Cabal's test
suites.
Link custom Setup with threaded runtime