(#21133) Report on installed windows package versions

Previously, the windows package provider knew what versions of
packages (MSI and exe) were installed, but did not report them,
e.g. when running `puppet resource package`.

This commit enables the package version to be included in the
output, e.g.

    C:\>puppet resource package Notepad++
    package { 'Notepad++':
      ensure => '6.4.5',
    }

In order for the `ensure` property to contain a version number,
the provider must be versionable, which this commit enables.

Note that the `ensure` version specified must match the
version of the package specified by the source parameter. If
it doesn't then puppet will think the package is out of sync
and needs to be updated. This is similar to what happens if
the resource name doesn't match the DisplayName value in the
registry, or differs in case.