Add Linux support

This provider uses Kernel::at_exit instead of a separate watcher process. This
technique should be portable to the Windows provider as well. Note that
rebooting will silently fail if the user Puppet is running as lacks permissions
to run the shutdown command.
Refactor prompting into a feature

Windows is the only system that supports reboot prompting, so it makes
sense to make this a feature rather than a requirement of the type.
Fix build on Ruby 1.8.7