(CFACT-91) Implement external facts on Windows

Add Windows external facts and execution infrastructure supporting it. Also ends up filling in Ruby custom fact support.
If we're not redirecting stderr, we should not be reading it at all.  Why not set the child process' stderr handle to a scoped handle of `CreateFileW(L"NUL", ...)`?  This would eliminate our need to spin up a thread and would match what we're doing for POSIX.