Create a test case for the poll loop which uses the loop to read data from a
pipe and assert that the data written to the pipe is identical to the data
read from the pipe. In order to implement this test, several useful classes
have been added:
* PipeReader
Reads output from one or more files and saves it in memory,
for retrieval via the getvalue() method. This is driven by
the scheduler's poll() loop, so it runs entirely within the
current process.
* QueueScheduler
Add instances of SequentialTaskQueue and then call run().
The run() method returns when no tasks remain.
* TaskScheduler
A simple way to handle scheduling of AsynchrousTask instances. Simply
add tasks and call run(). The run() method returns when no tasks remain.
svn path=/main/trunk/; revision=11022