Move the tests around a bit
Add another sectioning comment
Expand tests to also test file iteration
Implement a ProcessIOReader helper class for wrapping processes

The new ProcessIOReader class wraps an external process by properly
hooking up stdin/stdout. It exposes a limited reading API (.read(),
.readline(), .readlines(), and iteration), handles both file names and
already opened files, and properly cleans up after .close().

This replaces the previous make_process_wrapper() hack that didn't work
properly and only worked with file names.