Removed text/marshal support

Removing text/marshal support in order to close the security
vulnerability described in Bug #13552.
Fix for bucket_path security vulnerability

This is a fix for Bugs #13553, #13418, #13511. The bucket_path parameter
allowed control over where the filebucket will try to read and write to.
The only place available to stop this parameter is in the resolution
from a URI to an indirectory terminus. The bucket_path is used
internally for local filebuckets and so cannot be removed completely
without a larger change to the design.

Conflicts:

	lib/puppet/network/http/api/v1.rb
	spec/unit/network/http/api/v1_spec.rb

Conflicts resolved by modifying the patch to fit the use of
Puppet::Indirector::Request in the code.
(#13260) Use mktmpdir when downloading packages

This fixes a security vulnerability in the appdmg and pkgdmg providers where
they would curl packages directly into /tmp and the install them, allowing an
attacker to craft a symlink and overwrite arbitrary files or install arbitrary
packages.

Conflicts:

	lib/puppet/provider/package/appdmg.rb
	lib/puppet/provider/package/pkgdmg.rb
Refactor pkgdmg specs

Refactor to a more current spec style. Several of these specs didn't actually
test anything. They have either been deleted or made more specific.

Conflicts:

	lib/puppet/provider/package/pkgdmg.rb
(#13260) Spec test to verify that mktmpdir is used
Stub mktmpdir and remove_entry_secure in os x package providers
Updating CHANGELOG and lib/puppet.rb for 2.6.15
Merge branch 'security/2.6.14/filebucket-bucket-path-security' into 2.6.x
Revert "(#5246) Puppetd does not remove it's pidfile when it exits"

This reverts commit e0e31d571f38a3f0436e43ea6662f6d6c1e525c5.

This commit caused spurious error messages when running `puppet agent -t` if
the agent was also running daemonized (#12188). It would display an error of
unable to remove pidfile, but the error would not affect the exit code.
Updating CHANGELOG and lib/puppet.rb for 2.6.16
(#3757) re-introduce lockfile changes

This commit re-introduces the lockfile behavior changes that
were originally merged in to 2.7.x via this pull request:

https://github.com/puppetlabs/puppet/pull/216

It was reverted because of mcollective compatibility issues.
For more info see:

http://projects.puppetlabs.com/issues/12844

It is now being reintroduced for Telly, but with some minor
modifications.  See #3757, #12933 and #12934 for details on those.
(#3757, #12934) Minor test improvement for agent disable message
(#13645) Do not open a smtp connection if nothing to report

If tagmail finds out that there are no messages that have to be sent to
anyone puppet will still open a smtp connection (if smtpserver is set)
and then close the connection without sending any data. This can lead
to a lot of syslogmessages on your smtp server like

   sendmail: puppet.example.com did not issue MAIL/EXPN/VRFY/ETRN
   during connection to MTA

The fix now does not even enter the send method if there are no reports
to be sent. This does also prevent unnecessary forking if there are no
reports.
Updating CHANGELOG, lib/puppet.rb for 2.7.14rc1
(#3757) separate settings for agent lockfile paths

There are now two different lockfiles for agents; one
for indicating that an agent is administratively
disabled, and one that indicates that an agent run
is already in progress.

In previous revisions, the paths for these lockfiles
was being built from a single puppet setting via
naming convention.  This commit does the following:

1. Creates two settings (:agent_running_lockfile and
:agent_disabled_lockfile) instead of the previously
existing one (:puppetdlock).
2. Removes the Configurer class from the chain of
command when the Agent class is determining the
lockfile path.
(#13645) Add test cases to tagmail_spec

If puppet is configured to use tagmail as a report, it should not send
an email if no message match any tag in tagmail.conf

The former behaviour was that puppet opened an smtp connection, did not
send any mail and then closed the connection again leading to errors on
the smtp server. The added tests now prove that the send method is never
even called when no message match any positive tag.
(#3757) move lockfile path logic into modules

The Puppet::Agent::Locker and Puppet::Agent::Disabler
had a weird dependency on the existence of some
lockfile methods in Agent, but Agent didn't use
those methods anywhere else.  This commit moves
all of the lockfile related stuff into the modules
in an attempt to improve encapsulation and clarify
the API of the modules.
(#3757) Remove 'anonymous' functionality from lockfiles

The agent lockfile mechanisms had a concept of "anonymous"
built-in to them.  This was necessary to help attempt to
disambiguate the meaning of the lockfile when we were
using it for two purposes (administrative-disabling vs.
run-in-progress).  Since we now have two separate lockfiles,
this is no longer necessary... and it makes the code
and API confusing.  This commit removes it, and the
resulting API feels much cleaner and more straightforward.

The "AnonymousFilelock" class needs to be renamed, but
I haven't done that yet.  My next commit is going to
transform it into a JSON-based lockfile class, so I'll
rename it as part of that commit.
(#3757) rename AnonymousFilelock to JsonFilelock

This commit simply renames AnonymousFilelock to
JsonFilelock.  The behavior hasn't changed at all
yet, so this is a bit of a suspect commit but
I wanted to make sure that the git history
was as clear as possible as to what happened
here.
(#3757) Implement json-based lockfiles

This commit does the following:

1. Refactors our main lockfile class to accept a data object
    as an argument to the #lock method.  This data can
    then be retrieved at any time while the lock is held;
    the implementation is to write the hash as JSON to
    the lockfile.  This will allow external tools to
    read it without calling into puppet code.
2. Refactor pidlock to use the above--but only serializing
    a String (the pid) to the file.
3. Refactor disabler to use the above, with a Hash containing
    a key/value pair identifying the "disabled" message.
4. Fix and clean up spec tests.