(#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.