(#2279) Handle providers with multiple installed versions - ruby gems
Ruby gems can have multiple versions installed, and the current
implementation of the gem provider only reads the very latest installed
version when self.instances is called. This leads to Puppet potentially
reinstalling the gem on every run if the Puppet manifest specifies a gem
that *is* installed, but is not the latest version installed.
This does require a change to how the package type checks if ensure is
insync? to handle multiple versions for the 'is' ensure value, but the
change is backward compatible with the providers that specify single
versions.