Draft: Reduce memory usage by revert to using popen() for diff input and output
Buffering all the inputs and output of a diff in memory can result in memory usage many times the size of the original input file, leading to OOM. We need to go back to streaming inputs and outputs.
This is a fairly quick hack that reverts commit f93fb4c1 and everything that depends on that.
This will need to be cleaned up so that it doesn't also remove the new features.
Closes: #100