(#15547) correct 'pending' values to correct if check for solaris.

Previously, the the pending examples were attempting to skip tests on
Solaris, but were actually skipping tests on all platforms.
Merge branch 'ticket/3.x/15547_correct_pending' into 3.x

* ticket/3.x/15547_correct_pending:
  (#15547) correct 'pending' values to correct if check for solaris.
(#8200) Ensure zonecfg errors are caught

zonecfg can return 0 even though it failed to apply a configuration. We
can catch it only if we check for the output. We now check for
/not allowed/ to verify that the property was applied.

Previously, we were using using `zonecfg -z zone -f -` to read commands
from stdinput and using IO.popen. However, we do not need to do this as
we pass config commands one at a time, and can invoke zonecfg with the
command directly. Hence removed the popen invocation from code for a
simpler exec.
(Maint) Update the test cases to use the 'let'

Changes:
  - updated the invocations to use the new let(:xxx) syntax
  - move each test to method specific contexts
  - ensure that stubbed commands specify arguments (zoneadm)
  - add more tests
(#8200) Munge the ensurable value

Previously, the ensure property was always out-of-sync, because we were
comparing the current symbol value against the should string value. This
occurred, because the type's ensurable methods redefine
`Puppet::Parameter.newvalue`, which has the side-effect of no longer
converting string should values to symbols.

This commit converts the should value to a symbol by defining a munge
method. It is a temporary measure until the real issue can be fixed in
15886.
(#8200) Change path from parameter to property

Previously path was a parameter which resulted in it not being included in
the resources listing. However since this is a required attribute, we
change it to a property instead.

We also remove the path validation from global validate and instead add
this check in each place that path is required.
Merge branch 'ticket/3.x/8200_validate_param' into 3.x

* ticket/3.x/8200_validate_param:
  (#8200) Change path from parameter to property
  (#8200) Munge the ensurable value
  (Maint) Update the test cases to use the 'let'
  (#8200) Ensure zonecfg errors are caught
(Maint) Fix Puppet.version in 3.x

Without this patch applied the Puppet 3.x branch is mis-reporting its
version as 2.7.19.  This is a problem because the spec helper uses the
`Puppet.version` method to determine how it should construct a
Puppet::Parser::Scope instance for parser function testing.  The
incorrect version string is causing the scope instance to be constructed
incorrectly ultimately causing the test failures with stdlib 3.x and
master.

This patch restores the Puppet.version to 3.0.0-rc3 which was the
version string prior to the problem being introduced in b33d517.
Merge branch 'fix/3.x/fix_version_string' into 3.x

* fix/3.x/fix_version_string:
  (Maint) Fix Puppet.version in 3.x
Merge branch '3.x'

* 3.x:
  (Maint) Fix Puppet.version in 3.x
  (#8200) Change path from parameter to property
  (#8200) Munge the ensurable value
  (Maint) Update the test cases to use the 'let'
  (#8200) Ensure zonecfg errors are caught
  (#15547) correct 'pending' values to correct if check for solaris.