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.
(#19162) Update type description

Update the readme and reboot type with a more realistic example of a package
that both won't install while a reboot is pending, and will require a reboot
to be complete installation.
(#19162) Add more validation to the timeout parameter

Adds more validation for non-integer values. We don't test that we reject nil.
values because that is handled by puppet.

Paired-with: Ethan Brown <ethan@puppetlabs.com>
Maint: Remove Ctrl-M whitespace

Remove windows carriage returns.
Merge pull request #1 from joshcooper/ticket/master/19162-reboot

(#19162) Manage pending reboots
Maint: Reject symbols on ruby 1.8

Previously, the timeout parameter did not reject symbols when run on
ruby 1.8, because on that version `Integer(:foo)` does not raise, where
as it does raise in ruby 1.9.

This commit uses a regex to make the validation more restrictive.