(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 think this for-loop reading from pipes and processing the output is the only part of execution I could abstract out to be shared between Windows and others. I'll take a closer look at pulling it into a common method.