(PUP-1892) File resources do not work with fileservers that are not the current puppetmaster.

the source parameter makes the 'uri' method private; assumably for security, the actual result is that
noone can get the full URI from the source param. The end result is that when collecting the source data
the file_content class uses full_path instead, which gets magically completed to use the puppetmaster.

If your fileserver is in fact some other remote host, that data is lost. This change makes 'uri' public
and adjusts the content handler so that it properly delivers either a URI as a string, or a
full path without leading slash (which is what the previous state was.)
(PUP-1986) Ignore source_permissions when downloading plugins on POSIX

Module pluginsync is handled by creating a Catalog with a File resource,
and Puppet's File resource defaults to replicating the source file
owner, group and mode. However, owner/group are additionally set to
Process.owner/group for a pluginsync download on POSIX, which will
typically be root during an agent run.

This combination of behavior meant that a root agent run on the puppet
master would cause Puppet's $libdir to be reset to the mode of the first
source module lib, but owned by root.

The puppet master, running as root, chuser's to the service user.  In a
Webrick setup, requests are handled by that service user; in a Rack
setup, it depends on how the Rack service has been setup, but typically
it is the service user again.  So, if the source module had restrictive
permissions, the puppet master, running as the service user, could end
up no longer being able to read $libdir.

On Windows, we were already setting the File type's source_permissions
parameter to :ignore when pluginsyncing.  This commit sets
source_permissions to ignore regardless of the platform, leaving
$libdir's mode unchanged on POSIX as well.

TODO unfortunately this means that owner/group of $libdir are still
being managed on POSIX by pluginsync, which will take precedence over
settings. This seems wrong.
(PUP-2282) Allow deprecation warnings to supply optional key

Puppet::Util::Logging#deprecation_warning keeps track of issued
deprecations keyed by the originating code line.  This works reasonably
well for tracing API deprecations, but can cause a problem for
notifications coming from internal calls which might happen to be called
multiple times by other code sections. It also causes problems if the
same line of code issues different deprecation warnings (say by
interpolating some parameter into the message).

This patch allows an optional key string to be submitted with the
deprecation_warning which takes precedence over using the
originating call line as the key.
(PUP-2282) Change environment setting deprecations to use keys

Ensures that deprecation warnings are issued for each deprecated
setting.
(maint) Remove unused helper method
(PUP-1114) Deprecate environment sections in puppet.conf

Environments specified in puppet.conf are deprecated ahead of removing
legacy puppet.conf environments in 4.0.  Now we issue a single
deprecation warning if a section other than main, master, agent or user
is present in puppet.conf.  Because the deprecation warnings are all
coming from the same line, Puppet::Util::Logging handles ensuring that
only one is issued.
(maint) Format according to norms

This fixes up a few formatting errors and converts the new (as well as
the old) uses of lambda {}.should to be the newer expect {}.to. It also
fixes a few tests that turned out to be making incorrect assertions. The
block to raise_error doesn't cause anything to fail if it returns false.
(PUP-1892) Remove dead code for missing uri

There is never a case where the uri method will return a value that is
nil. In fact, if uri ever was nil, then full_path would also be nil,
since the full_path is based on the uri value. This removes this dead
code path.
Merge branch 'dreamlibrarian-fix/file_content-remote-fileserver'

* dreamlibrarian-fix/file_content-remote-fileserver:
  (PUP-1892) Remove dead code for missing uri
  (maint) Format according to norms
  (PUP-1892) File resources do not work with fileservers that are not the current puppetmaster.
Merge pull request #2513 from jpartlow/issue/master/pup-1986-module-dir-permissions-overwrite-libdir

(PUP-1986) Ignore source_permissions when downloading plugins on POSIX
(PUP-1711) Add support for Ubuntu 14.04, Trusty Tahr
(maint) Quote % in hiera.conf for dynamic environments acceptance

Ruby 1.9 needs the '%{environment}' quoted.
Merge pull request #2548 from melissaanne/ticket/master/pup-1711

(PUP-1711) Add support for Ubuntu 14.04, Trusty Tahr
(PUP-2282) Guard caller() lookup in deprecation_warning

Henrik pointed out that get_deprecation_offender() takes a bit of time
(0.05ms was his benchmark), and suggested this change so that we only
lookup the caller if we don't have a key or have not yet logged a
message.
(maint) Fix comparison error float - string

The comparison used kind_of(), intead of kind_of?()
Test added.
Merge pull request #2541 from jpartlow/feature/master/pup-1114-deprecate-environment-conf-in-puppet-conf

Feature/master/pup 1114 deprecate environment conf in puppet conf
(DOC-565) Improve description of package type's package_settings property

This commit aims all scrutiny at the provider documentation, and clarifies our
advice for provider developers.
(DOC-698) Revise doc text for modulepath, environmentpath, and friends

These settings wanted some more clarity about the nature of the deprecation and
the nature of the recommended path forward. I also took the chance to move away
from links.puppetlabs.com for a URL whose permanent address we know today.
(maint) Update dir env links in deprecation warning and example env README file

Since we know the permanent URL of this page, we should use it directly.