(PUP-1932) Restrict systemd provider to manage file-based services

Prior to this commit, the systemd provider returned in-memory services.
This had a couple odd consequences, e.g. with 'puppet resource service':
1) short-lived services would come and go, though they are not actually
   managed directly
2) disabled and stopped services wouldn't be reported at all

This commit changes the systemd provider to return file-backed
services.
(PUP-1433) Add example environment to deb packages

This adds an /etc/puppet/environments/example_env directory,
subdirectories, and a README about the environment. We can't remove the
existing /etc/puppet/manifests directory because it would destroy a
large number of deployments (anyone with automation depending on that
directory being created). We also can't create a production environment
because it would then shadow the /etc/puppet/manifests directory and
also end up breaking automation as well as any existing regular
installations. The example environment with a README seems to be the
best way to move forward and try to present the new system to users.
(PUP-1547) Undefined method for nil:NilClass when no providers found

When a puppet type has a list property and no providers are found for that type,
provider is nil and causes an "Undefined method 'property' for nil:NilClass" error.
ie. Undefined method 'groups' for nil:NilClass for the user type

Check if provider is nil before trying to access the property
Add docs badge to README
(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-1433) Create example environment for redhat

This adds the example environment for the RPM packages. See the previous
commit for an explanation about why environments are being added to
packages in this manner.

This also moves the README.environment into a shared location so that it
can be kept the same between various packaging systems.
(PUP-1433) List all created directories in deb

The previous commits relied on automatic creation of parent directories.
This explicitly calls out each directory, which brings the debs in line
with how the rpms are expressed.
Maint: Fix buggy auth.conf example in fileserver.conf

To really get this to work right, you need to include the pluralized versions of
each. I missed that the first time around.
(packaging) Update PUPPETVERSION to 3.5.0-rc3
(maint) Add travis notifications to #puppet-dev
(PUP-1433) Deprecate non-environment manifest settings

Modulepath, manifest, and config_version are now handled by the new
directory environment system. Templatedir and manifestdir are being
completely removed. This adds the appropriate deprecations so that users
are warned they are doing something that will change.
(maint) Display full trace to deprecated code

Sometimes the location that immediately triggered the deprecation
warning isn't enough information to understand what happened. This adds
the ability to see the full trace to the deprecation when --trace is
enabled.
(PUP-1433) Use modulepath of the current environment

Facts used to be loaded by looking at the Puppet[:modulepath] setting,
but that is now deprecated. This changes it to use the modulepath of the
:current_environment.
(PUP-1433) Stop deprecating env settings on CLI

When config_version, modulepath, and manifest were specified on the
command line, the code that updated the current_environment with the
information looked it up in the settings. This changes it to use the
value() method which isn't going to issue the warning. After the
deprecation period is over the command line handling will be changed to
just global application command line handlers and the environment
configuration will be driven from that.
(PUP-1433) Remove use of manifest setting
(PUP-1433) Remove use of modulepath setting
(PUP-1433) Gather sections for deprecation check in a Ruby neutral way

Ruby 1.8.7 Hash#select() returns an Array, 1.9.3 returns a Hash. So
we'll inject() instead.
(PUP-1433) Add short link to env settings deprecations

Currently pointing to 3.5 environment docs. The short link will need
updating for 3.6.
(PUP-1433) Add deprecation notices to the setting descriptions
(PUP-1433) Link to environment docs

This adds a link to where a user can get more information about the
environments.