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
(PUP-1133) Windows tests write config to temp

 - Previously tests were writing to the shared
   %ALLUSERSPROFILE%\PuppetLabs\puppet directory, and would blow
   up if this directory did not exist
 - Because this directory was shared from one run to the next, failing
   tests could be masked by data generated / used by a locally installed
   Puppet
 - The stubbing of FileSystem::File.exist? to return true was causing
   some tests to treat files like c:\dev\null\foo to attempt to be
   loaded, which would cause these tests to fail in isolation, but not
   when run within the suite
 - Had to change some doc specs under Ruby 1.9 / OSX to verify a value
   instead of asserting a method was called, to prevent a stack overflow
 - In some unit tests, the process of reading / writing settings caused
   issues with test loading, so Puppet.settings.use has been stubbed
(PUP-1133) Reset permission on Windows test files

 - Previously some security tests manipulated file permissions in
   a way that made it impossible for the top-level spec temp file
   cleanup to be performed.  This patch resets the files after runs.
(PUP-1133) Clean up leftover parser generate temp

 - Files were created without going through tmpfile as they needed
   specific extensions
(PUP-1133) Cleanup Windows symlink

 - Windows symlinks, when targeted at directories, do not get cleaned up
   if not unlinked, even when going through the global tmpfile
Merge branch 'pr/2176'

* pr/2176:
  (maint) Windows file provider :links => :follow
(maint) Provide option to 4x->3x convert to handle :undef differently

Functions requires :undef conversion to '', while other parts
require :undef (verbatim). This changes the signature of the convert
method to accept the value to use when :undef is encountered.
(PUP-798) Add call to watch_files to ensure reparsing

This adds a call to watch_file in the code path for the future
parser/evaluator at the same place such call is made in the 3x
implementation. 

The ParserFactory is given an environment, and when this is 
a real environment, its known_resource_types are given to the parser
adapter being created to allow it to make the call to watch_file.
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.
(PUP-1218) Add ssh-ed25519 support to the sshkey type
(PUP-1218) Teach the ssh_authorized_key provider about ssh-ed25519 too.
Merge pull request #2172 from adrienthebo/master-bug-22744-filter_static_compiler

(PUP-609) (#22744) Filter virtual resources in the static compiler
(PUP-1133) Cleanup after Rails temp log files

 - With Rails code that establishes a logger that writes to a temp log
   file, the logger must be closed to release the file for cleanup on
   Windows, without having access denied messages
Merge pull request #2173 from Iristyle/ticket/master/pup-1133-windows-allusersprofile-test-fails

PUP-1133 Windows test failures / extraneous temp files
(PUP-986) Update references to point to Jira

Since the Puppet project has moved from Redmine to Jira, we need to
update all of our references to point to the new place.
(#23343) Use `replace_file` to update a file's contents

The previous code had an unsafe use of temp files by looking for a name
it can use in a directory and then later opening the file and writing to
it. An attacker could, through some lucky timing and good access, make
the selected name a symlink to another file and thereby cause puppet to
overwrite something that it did not intend to.

The temporary file is used to make the file update atomic and also to
check that the contents have been written correctly. This updates the
file type to use the Puppet::Util#replace_file method to do a safe,
atomic, content swap. Since replace_file requires a mode to be provided,
the code was also updated to use the assumed default of 0644, which is
used when figuring out the absolute mode integer from symbolic modes.

In order to get this change to work on windows, there were a few
modifications that needed to be made as well:

 - New file must have binmode set to generate checksums
   appropriately across operating sytems that results from newline
   differences
 - replace_file has been adjusted so that passing a mode is now
   optional, and mode is only applied when the passed value is not nil
 - Windows code has been cleaned up / refactored to reduce unnecessary
   confusing code paths.  The simple mechanism for ensuring Windows
   ReplaceFile will always succeed is to first create a file by
   touching it (yielding default permissions) if it does not yet exist.
 - New integration tests assert that replace_file behaves properly on
   Windows, and the == operator was implemented on access_control_list
   for the sake of test clarity
 - replace_file is now allowed to take a nil `default_mode` so that when
   the file type is not attempting to manage the mode of the file we
   will end up with the system default.
(maint) Fix can't modify frozen Symbol error on Ruby 2.1.0

Without this patch we're getting the following error on Ruby 2.1.0:
`can't modify frozen Symbol (Puppet::Error)`.  This problem is caused by
our monkey patching which attempts to cache Symbol#to_proc return values
instead of creating new instances on every call.

As it turns out, the caching optimization is not necessary on Ruby 1.9.3
and later because Symbol#to_proc implements its own caching system in
these versions.

Here is the full error this patch avoids by not monkey patching
Symbol#to_proc on versions of Ruby prior to 1.9.3.

    bundle exec rspec -fd spec/integration/agent/logging_spec.rb
    /workspace/serious/src/puppet/lib/puppet/util/monkey_patches.rb:79:in `to_proc': Could not autoload puppet/type/component: can't modify frozen Symbol (Puppet::Error)
      from /workspace/serious/src/puppet/lib/puppet/transaction/event.rb:15:in `<class:Event>'
      from /workspace/serious/src/puppet/lib/puppet/transaction/event.rb:8:in `<top (required)>'
      from /workspace/serious/src/puppet/lib/puppet/transaction.rb:13:in `require'
      from /workspace/serious/src/puppet/lib/puppet/transaction.rb:13:in `<class:Transaction>'
      from /workspace/serious/src/puppet/lib/puppet/transaction.rb:11:in `<top (required)>'
      from /workspace/serious/src/puppet/lib/puppet/type/component.rb:4:in `require'
      from /workspace/serious/src/puppet/lib/puppet/type/component.rb:4:in `<top (required)>'
      from /workspace/serious/src/puppet/lib/puppet/util/autoload.rb:61:in `load'
      from /workspace/serious/src/puppet/lib/puppet/util/autoload.rb:61:in `load_file'
      from /workspace/serious/src/puppet/lib/puppet/util/autoload.rb:202:in `load'
      from /workspace/serious/src/puppet/lib/puppet/metatype/manager.rb:159:in `type'
      from /workspace/serious/src/puppet/lib/puppet/type.rb:2466:in `<top (required)>'
      from /workspace/serious/src/puppet/lib/puppet.rb:175:in `require'
      from /workspace/serious/src/puppet/lib/puppet.rb:175:in `<top (required)>'
      from /workspace/serious/src/puppet/spec/spec_helper.rb:16:in `require'
      from /workspace/serious/src/puppet/spec/spec_helper.rb:16:in `<top (required)>'
      from /workspace/serious/src/puppet/spec/integration/agent/logging_spec.rb:2:in `require'
      from /workspace/serious/src/puppet/spec/integration/agent/logging_spec.rb:2:in `<top (required)>'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `block in load_spec_files'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `map'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load_spec_files'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:22:in `run'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:69:in `run'
      from /workspace/serious/src/puppet/.bundle/gems/ruby/2.1.0/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `block in autorun'
(PUP-1246) Fixed hiding error details in fileserver.conf parser

This patch fixes wrong parser behavior in case when fileserver.conf
contains some broken lines. It helps to debug configuration problems
and makes puppet's user life a little bit easier.

Also added 2 unit tests for validating these buggy cases.
(packaging) Update PUPPETVERSION to 3.4.1