Allow version and held states of a package to specified as separate properties

Before this patch version and held states needed to be specified as part
of the ensure property on a package:

    package { foo:
      ensure => 'held',
    }

    package { foo:
      ensure => '1.0',
    }

After this patch those states can be specified as separate properties:

    package { foo:
      ensure => installed,
      version => '1.0',
      held => true,
    }
I was trying to keep the version logic in the install method, which ultimately needs to be called to grab the correct version.