(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'm not a huge fan of this name. It should indicate that you are okay with letting a package be reinstalled. I'm thinking something more along the lines of `allow_reinstalls` or `allowreinstalls`. @nfagerlund thoughts?