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,
    }
Using `:methods => []` has strange semantics in that providers will automatically enable this functionality if they have these methods defined, and the system cannot enable this when it's actually workable. It's better to omit this and allow providers to actually specify `has_feature :versionable`. This has bitten us pretty badly in the past with the `:holdable` property.