(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.
Can we do an `output.assign(buffer.begin() + lastNL, buffer.end())` call here so we don't lose output's buffer with the move assignment operator?