(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 don't see us moving `var` or `val`.  Should we be taking these by value?