Prototype reboot type and provider

This commit prototypes a reboot type and provider. To use it create a
resource, and establish `subscribe` or `notify` relationships between
a resource, e.g. package, and a reboot resource. Only if the former
resource is modified during a run will the reboot be performed.

Puppet's transaction log will contain the results for every resource
processed up until that point, and will enable puppet to gracefully send
a report and exit.

There is a race condition in that the reboot might be triggered before
puppet has sent it's report, etc. Ideally, the `when` parameter could
accept different values to decrease the chances of that occurring.