Maint: Gemfile/.gitignore

This adds a .gitignore and a Gemfile to the repository. The gemfile is based on
the usage of puppet/facter/hiera from a local directory if existing (through
environment variables). Without this a developer may have to install
puppet/facter prior to working on this and then uninstall them after to work on
those repositories.
Maint: add Rakefile / update spec helper

This adds a rake file for executing rake and updates the spec helper to
configure rspec appropriately for windows
Maint: Update the module file

Added summary, description, updated information about the module.
(#19162) Provide base provider/fixes to type

This updates the type based on feedback from Reid and Chris B. Also
refactors the provider in preparation for multiple platform support.
(#19162) Support reboot on refresh

This commit updates the reboot type and windows provider to reboot when
the resource is refreshed in response to another resource's event, e.g.
package installed.

It fixes a bug when executing `puppet resource reboot` due to the instances
method not being defined.

It adds tests for the reboot type, the base provider, and the windows
provider.

It adds a timeout parameter to control how far in the future the reboot
should be performed (from when it's been requested). In particular, the timeout
can be specified as 0, which will reboot immediately.

Paired-with: Josh Cooper <josh@puppetlabs.com>
(#19162) Update `puppet describe reboot` docs

Update the describe documentation for the type and parameters.
(#19162) Manage pending reboots

This commit adds a `manages_reboot_pending` feature, which indicates that the
provider is able to detect when a reboot is pending/required, and if so,
reboot the system.  This is expressed as:

    reboot { 'now':
      when => pending
    }

The windows provider supports the feature, and does so by querying the
registry.