(#23368) script based external facts are broken on 2003

The Facter::Util::Resolution.exec method expects that commands with spaces are quoted. On 2003, external facts are typically under `C:\Documents and Settings\All Users\Application Data`. As a result, facter would always fail to execute external executable facts on 2003.

This is not an issue on 2008 and up, because external facts are typically located under `C:\ProgramData`.

This is not an issue for powershell scripts, because we pass the quoted name of the script to powershell.

This is not an issue for text based external facts, because `File.read` do not require paths with spaces to be quoted (since its not a command and possibly arguments, or just a command with spaces).

This commit adds a `quote` method to the ScriptParser so that we quote the script if it has spaces.