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

Update the readme with realistic examples describing before and after
reboot scenarios.
(#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>