Rework simd_op_check test
Rework simd_op_check test

— use std::async instead of fork(), so we can now usefully test on
Windows. (On my Mac laptop, this runs slightly faster than the previous
fork() solution.)
— Refactor the code to be class-based, and move all globals into member
vars; this makes it much easier to reason about what is read-only vs
read-write during test execution vs test initialization
— add an extra, optional cmd line arg to allow the temp files to be
output to a particular directory; default this directory to
Internal::get_test_tmp_dir().

Former-commit-id: 007af53c60b3355dcd1388a4ac9c7ea1cbb1e96b
Trass3r/Halide,Trass3r/Halide,Trass3r/Halide,Trass3r/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,darkbuck/Halide,Trass3r/Halide,Trass3r/Halide,Trass3r/Halide,darkbuck/Halide