(#19162) Support immediate reboots

This commit adds the ability to perform a reboot `immediately` regardless of
whether a reboot is pending or not.

To accomplish this, it changes the `when` parameter to a property, and
overrides the Puppet::Property#insync? method. In the case of refresh-based
reboots, we always want to consider the `when` property to be insync, since
we only want to perform a reboot due to an event from another resource. In the
case of immediate-based reboots, we always want to consider the `when` property
to be out-of-sync, so that we always trigger a reboot.
Maint: Update the module file

Added summary, description, updated information about the module.
(#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.

Tests are needed.