(#9546) Preserve permissions in 'puppet module build'

Previously, 'puppet module build' made no attempt to preserve
permissions. This could render any external fact scripts
unexecutable.  This patch simply preserves permissions when
creating the pkg directory which is tarred up to build the
module.
(#9546) Preserve execute permissions on 'module install'

Previously (even with the patch to 'module build') execute
permissions were stripped from everything in a module.  This
was introduced to fix the security holes discussed in #14333.
However that fix (which set all files to 644) had the unneeded
side effect of discarding the executable bit.

So this change preserves permissions from the tarball, but
removes sticky/setuid/setgid bits (which are the security hole)
and removes file write permissions (which aren't needed).  This
should address the needs of both #9546 and #14333.
(#9546) Update test to reflect changed permissions
(#9546) Change check for module installation

Now that we are only stripping the dangerous bits from the file
permissions (sticky, suid, sgid, and write) the test for correct module
installation was incorrect.
Merge branch 'kylog-issue/9546/make-pmt-to-preserve-execute-permissions'

* kylog-issue/9546/make-pmt-to-preserve-execute-permissions:
  (#9546) Change check for module installation
  (#9546) Update test to reflect changed permissions
  (#9546) Preserve execute permissions on 'module install'
  (#9546) Preserve permissions in 'puppet module build'
(Doc) Mark the Puppet::Util::Execution public methods

The methods where not public, nor private. They should have been marked
public.
Merge branch 'master' of https://github.com/puppetlabs/puppet