(PUP-121) Make examples for relative/absolute shared

This makes the examples that test include, require, contain
share the same tests.

This also adds one missing error condition.
(PUP-2360) Yumrepo type allows invalid values

None of the regexpes was actually looking for the whole value to match,
just any part of it would suffice.
Merge branch 'pull-2575'
(PUP-2663) Allow string to contain leading sign in numeric conversion

This makes it possible to use an unary +/- in a string. The sign
of the converted value abides by the unary string sign. White space is
allowed around the sign, and at the end of the string.

'+ 2' + '- 2' == 0

This is of value when dealing with original data in string form
that needs to be converted. Without this it is especially difficult to
pass a negative value around in string form.
(maint) Remove redundant code
(PUP-121) Improve documentation of include, require and contain
(PUP-2691) Re-adding the missing ‘description’ property to P::MT::Metadata.

Prior to Puppet 3.6.0, users had a ‘description’ property which they
could reliably expand into their module skeleton’s ERB templates.  This
property was removed from the default set of properties in Puppet 3.6.0,
which effectively broke template expansion for users relying on it.

This change ensures that users can continue to rely on this property.
(PUP-1381) Add link to explanation of message

Our standard practice for deprecation messages is to provide a link that
can point to more information than the message can provide.
Merge branch 'pr/2492'

* pr/2492:
  (PUP-1381) Add link to explanation of message
  (PUP-1381) make file_setting spec test more robust
  (PUP-1381) issue warnings to current users of cron purging
  maint: relax spec test of resources
(PUP-1070) cleanup empty/invalid lockfiles

Currently lockfiles won't be cleaned up automatically if they're empty or contain
non numeric characters.

This commit solves this by verifying that the content of the lockfile
contains a number or otherwise return nil which will result in deleting
the pidfile.
Merge branch 'ticket/master/PUP-1070-cleanup-invalid-lockfiles'

* ticket/master/PUP-1070-cleanup-invalid-lockfiles:
  (PUP-1070) cleanup empty/invalid lockfiles
(PUP-1843) Refactor duplicate code

Puppet::Indirector::Hiera and Puppet::DataBinding::Hiera had
identical implementations.  Puppet::DataBinding::Hiera is now a subclass
of Puppet::Indirector::Hiera.  Common behavior in their specs was also
moved into spec/shared_behaviors.
(PUP-2298) Use resource specific log_exception

Previously, we were logging the exception using `Puppet.err` and
passing in the resource reference in the message.

This commit changes it to use the log_exception method mixed into the
resource (Puppet::Type) so that we get resource-specific error
messages.

    Error: /Stage[main]/Main/Notify[hello]: something is not right
Merge branch 'pr/2549'

* pr/2549:
  (PUP-2298) Use resource specific log_exception
  (PUP-2298) protect transaction spec test against new exceptions
  (PUP-2298) add resource lifecycle method Puppet::Type#pre_run_check

Closes GH-2549
Merge pull request #2703 from jpartlow/issue/master/pup-1843-hiera-indirector

Issue/master/pup 1843 hiera indirector
(maint) Use real types and providers to exercise post_resource_eval

Previously, the spec tests were using the `user` type to test
post_resource_eval, but this has the side-effect of enumerating all of
the users on the system. On Mac OSX, this takes upwards of 4 seconds due
to parsing plist info.

This commit adds two new test-specific providers, which override the
`post_resource_eval` method, like a real type would do.
(maint) Use transaction_with_resource helpers to build up catalog and transaction

Cleanup the test to reuse the helpers that build up the catalog and
transaction. Eliminate instance variables of the form `@transaction` as
these can and should be local to the rspec example.
(PUP-1843) Clean up hiera terminus

The data_binding/hiera_spec.rb had a specific after block to clear up
the hiera terminus for following tests.  Moved this to the
shared_behaviors/hiera_indirections so that both indirector/hiera_spec
and data_binding/hiera_spec would be cleaned up, preventing order
dependent errors caused by global terminus state leaking between tests.
Merge branch 'maint/master/transaction_spec'

* maint/master/transaction_spec:
  (maint) Use transaction_with_resource helpers to build up catalog and transaction
  (maint) Use real types and providers to exercise post_resource_eval
(PUP-2657) FFI Puppet::Util::Windows::Error

 - Remove dependency on 'windows/error'
 - Expand FFI helper methods from MemoryPointer to Pointer as we need
   them to operate on a chunk of memory that will be LocalFree'd (i.e.
   MemoryPointer is set to own the memory and autorelease when done)
 - Unfortunately, attempts to use FFI to call GetLastError were futile.
   FFI.errno should automatically be capturing the GetLastError result
   of any call made through FFI, however this doesn't appear to be the
   case in practice.  Furthermore, attempting to define GetLastError as
   a function in FFI yields the same result.  A number of tests fail
   as the error code is being stomped / swallowed.  The solution is to
   use Win32API.new to define / use this single function.  Sigh.