Correct to reflect current reality
Add debugger invocations
Remove temporary test file
Support asynchronous reading from multiple inputs

This removes a source of deadlock when the command is used
to gather data from multiple streams with large amounts of
data.  See the last test case in test-sgsh.sh

The change involves converting the buffer pool into an object
and adding one to each input source.
In addition each output sink is associated with the input source
it currently reads.

While at it create and use constructors for sources and sinks.