(PUP-2452) Reinstall support for Package type

This is implemented behind a feature that each provider must implement. It is intended to allow source distributions to recompile packages on a notify or subscribe event.

It allows patterns like:

    package { "www-servers/nginx":
       ensure    => latest,
       subscribe => File['/path/to/nginx/compile/options'];
    }
I suggest `reinstall_on_refresh` as the param name. For the param docs, I suggest:

"Whether this resource should respond to refresh events (via `subscribe`, `notify`, or the `~>` arrow) by reinstalling the package. This is useful for source-based distributions, where you may want to recompile a package if the build options change. 

When enabling this, be careful of notifying containers when you want to restart a service, since it can potentially cause spurious and time-consuming re-installs. 

Defaults to false."