Allow multiple pipes to be read from in the PipeChannelManager by utilizing threads for each ready pipe.  This also prevents "Too many open files" errors from occurring