(#8412) Add optional type-level validation of the source parameter
We need to be able to make the source parameter required for the MSI
provider, since the .msi is directly used for installation, and
uninstallation of the package.
To accomplish this we add a validate_source method to the base package
provider class that treats source as always valid to ensure there is
no behavioral change with any of the existing providers, and we will
override this in the MSI provider to make sure that it is set, and not
an empty-string.