(#16585) Remove dead ldapnodes setting

This setting has been dead code since 0.24.0, and its value is never read.
This commit removes it.
(#16757) Only load rubygems in bin/puppet

Under some setups it is necessary that we don't load rubygems ourselves (such
as running bundler in stand-alone mode). This change gives the user control
over loading rubygems, at the cost that they are now required to load rubygems
if loading puppet with rack.
(#16757) Don't load rubygems if bundler is running

If bundler is handling gems we don't want to load rubygems ourselves, as it
can conflict and cause loading of system gems beyond what bundler has set up.
Merge branch 'ldapnodes_setting' into 3.0.x

* ldapnodes_setting:
  (#16585) Remove dead ldapnodes setting
(#15717) Kick agent using its fqdn

Previously, the acceptance test would fail if `puppet kick` verified the
SSL certificate of the target, and the hostname it connected to didn't
match what was in the certificate.

The `agent` string contains the agent hostname as specified in the
configuration file, not the fqdn. Also, the agent and master may be in
different domains.

This commit modifies the test to query the agent for its fqdn, and then
puppet kick's that.
(#16757) Move rubygems require to application entry point

The previous commit removed the side-effect of loading rubygems as a
result of evaluating the `Puppet.features.rubygems?` feature. As a
result, the puppet script was the only place where we loaded rubygems,
breaking rack setups.

This commit moves the loading of rubygems into the
Puppet::Util::CommandLine, which is effectively puppet's entry point
for both command line and rack setsups.

In addition, `Bundler::Setup` doesn't always seem to exist, at least
not in all versions of bundler, so instead we're using `::Bundler` to
detect if it's loaded.

Paired-with: Andy Parker <andy@puppetlabs.com>
(#16757) Deprecate Puppet.features.rubygems?

Loading rubygems inside an library is wrong, it needs to be controlled
by the environment.

Previously, several puppet features relied on the side effect of
loading rubygems as a result of evaluating the feature. This is no
longer necessary now that rubygems loading is handled in the
Puppet::Util::CommandLine entry point.

This commit adds a deprecation warning if `Puppet.features.rubygems?`
is invoked, and reinstates the previous behavior of requiring rubygems
to maintain backwards compatibility.

Paired-with: Andy Parker <andy@puppetlabs.com>
(#16757) Don't require rubygems

Previously, the windows service code was explicitly requiring
rubygems. While not breaking anything, it's not desirable, as the
environment should load rubygems, or not, instead of the service code
itself.

This code changes the daemon batch file to execute rubyw with rubygems
support enabled.

Paired-with: Andy Parker <andy@puppetlabs.com>
(#16757) Prevent using rubygems when bundler is in use

Previously, the `has_rubygems?` method only took into account whether
the `::Gem` constant was defined. However, bundler also defines this
constant. As a result, puppet could load code from rubygem directories
that bundler did not want us to see.

Also, the spec tests failed when invoking rspec via bundler, because
we didn't correctly mock whether rubygems was available or not.

Paired-with: Andy Parker <andy@puppetlabs.com>
Merge branch 'ticket/3.x/16757-rubygems' into 3.0.x

* ticket/3.x/16757-rubygems:
  (#16757) Prevent using rubygems when bundler is in use
  (#16757) Don't require rubygems
  (#16757) Deprecate Puppet.features.rubygems?
  (#16757) Move rubygems require to application entry point
  (#16757) Don't load rubygems if bundler is running
  (#16757) Only load rubygems in bin/puppet
(#16801) Remove mongrel references from init scripts

Built-in mongrel support has been removed in Puppet 3.x, so the puppetmaster
init scripts and defaults files should no longer mention them or try to use
them as options. This commit removes the code paths that reference mongrel and
--servertype. It also adds checks to both init scripts to check for multiple
ports or puppetmasters set. In those cases it prints a warning to the user
explaining that only one puppetmaster, on one port, will be started. It also
explains where the setting can be updated.
Maint: Retab puppetmaster init scripts

This commit replaces all 2 space tabs and hard tabs with 4 space tabs and adds
a vim tab explanation at the bottom of both init scripts.
Maint: Remove unused $prog variable from redhat puppetmaster init script
(#16801) Remove lib/puppet/network/http/mongrel

Mongrel support was removed for #15733 in commit a113907c, but it was
accidentally added back when #7962 was merged in commit 12d81c7.

This commit removes the code again.
(#16801) Remove mongrel references from manpage
(#16801) Remove mongrel_spec.rb as it is no longer in use.

Previously, all of the tests were being skipped because
`Puppet.features.mongrel?` is always false. These tests are no longer
valid as the source it's trying to test has been deleted.
(#16801) Remove mongrel references

Remove references to mongrel setups, which are no longer supported.
Merge branch 'ticket/3.0.x/16801_remove_mongrel_from_init_scripts' into 3.0.x

* ticket/3.0.x/16801_remove_mongrel_from_init_scripts:
  (#16801) Remove mongrel references
  (#16801) Remove mongrel_spec.rb as it is no longer in use.
  (#16801) Remove mongrel references from manpage
  (#16801) Remove lib/puppet/network/http/mongrel
  Maint: Remove unused $prog variable from redhat puppetmaster init script
  Maint: Retab puppetmaster init scripts
  (#16801) Remove mongrel references from init scripts
Update redhat logrotate to signal correct process

As the puppet master has moved from the removed binary puppetmasterd to the
puppet binary, this commit updates the logrotate rule for redhat to signal the
`puppet master` process instead of the non-existent puppetmasterd process.
Remove unused suse packaging files

The suse puppet.spec references the redhat logrotate, fileserver.conf,
puppet.conf files, so the suse files were never used and only created 3 sets of
2 identical files to maintain.  This commit removes those files.