(PUP-1099) Fix incorrect permissions in RPMs

The RPM spec template uses extremely restrictive permissions for `log`
and `lib` directories. These permissions were being incorrectly applied to
`examples` during packaging. This corrects that problem by resetting
default attributes after restricting `log` and `lib` directories.
(maint) Windows file provider :links => :follow

 - Previously, the Windows file provider would raise an error when
   applying a catalog that contained file resources with `:links =>
   :follow`, when the given path was not actually a symlink
 - The behavior of readlink is essentially correct, as File.readlink on
   other operating systems yields Errno::EINVAL: Invalid argument
 - Therefore the appropriate behavior to match Puppet on other
   platforms is to behave like File.chown, which will operate on the
   link IFF it is one, or will operate on the file / dir directly if it
   is not a link
 - Corrected a minor issue in the creation of the error msg raised
   by the Windows implementation of readlink
(PUP-665) Don't call hooks unless absolutely necessary

Calling hooks on configuration settings that don't have them forces the
code to interpolate any `$variable`s in the value of the setting. There
are a couple places where the hooks are called before everything has
been fully prepared (such as in initialize_global_defaults) and so run
mode settings such as confdir are not available.

This restores the old behavior in which only settings with hooks will
end up going down this path. This doesn't fully address the problem, but
it does make the surface area much smaller.
Merge pull request #2178 from zaphod42/issue/master/pup-665-interpolating-variables-too-early

(PUP-665) Don't call hooks unless absolutely necessary
Merge pull request #2171 from mckern/ticket/stable/PUP-1099

(PUP-1099) Fix incorrect permissions in RPMs
Merge branch 'stable'

* stable:
  (PUP-1099) Fix incorrect permissions in RPMs
Merge branch 'pr/2176'

* pr/2176:
  (maint) Windows file provider :links => :follow
Add vagrant testing guide to acceptance/README.

Point to the acceptance/README in the README_DEVELOPER, and also update
the README_DEVELOPER to refer to beaker rather than the now-deprecated
puppet-acceptance.