20023 - Support windows in the Puppet Agent

This adds support for the puppet agent on Windows. All the necessary
status methods are implemented, but running in the foreground and
signalling the daemon are not supported. The only way to invoke Puppet
is via a background run. Because the "daemon" is just a wrapper rather
than an actual Puppet daemon, background runs are allowed on Windows
even when the daemon is running.

Also added a new option puppet.service to specify the Puppet service
name. This is used on Windows to determine whether the Puppet daemon is
running.