(#13196) Powershell provider for puppet

This commit adds support for a powershell provider. The provider is only
suitable if powershell is installed and the binary is in your PATH when
puppet is running. The provider also does not take into account file
system redirection, so when running 64-bit OS's, the provider will invoke
the 32-bit version of powershell, since ruby is a 32-bit process.

When specifying the command to run (or the unless or onlyif exec
parameters, you will need to escape any powershell variables, e.g. `$_`,
or enclose them in single quotes so that puppet does not interpolate them.