Replace NonBlockingPopen with a VirtualTerminal

This PR is a bit premature since the Windows side of the terminal is yet to be done. However, I'd like to get this pushed to our Jenkins setup and start stress testing this code with the Jenkins builds.