(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.
I'll look at this again. There's a bug in the original one I'll have to fix that seems to be hit in Powershell execution, but I can deal with that. I could minimize the vector alloc by moving it outside the loop, but I'm not too attached to this implementation. I was trying to make something that's easier to understand.