(CFACT-91) Rework execute to share stream-processing code

Execute has a section that processes stream output from ReadFile/read, either calling a callback or concatenating the results.
Extract that code into execution::process_stream so it can be shared between Windows/Linux, accepting a closure that yields
new data from a stream.