(#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.
(#16801) Update suse server.init and remove mongrel refs

The binary used to start the puppetmaster process has changed in Puppet 3.0, as
has the pidfile location. Built-in mongrel support has also been removed. This
commit adds a warning if mongrel settings are detected and also updates calls
to startproc, checkproc, and killproc to use a pidfile to ensure the correct
process is used, and not the `puppet agent` process. It also updates the
pidfile location to match reality and adds master to the PUPPETMASTER_OPTS so
the correct application is started.
Update suse client.init for new pidfile, process name

The binary used to start the puppet agent process has changed in Puppet 3.0, as
has the pidfile location. This commit updates calls to startproc, checkproc,
and killproc to use a pidfile to ensure the correct process is used, and not
the `puppet master` or other process. It also updates the pidfile location to
match reality and adds agent to the PUPPET_OPTS so the correct application is
started.
Update suse puppet.spec for Telly

In Puppet 3.0, the ruby requirements have changed, as have certain packaging
locations. Many binaries have also been removed, as they were deprecated in the
2.7 series. This commit updates the ruby dependency to >= 1.8.7, moves the
packaging file locations from conf to ext, and removes references to sbin and
other removed binaries.
Merge branch 'maint/3.0.x/update_suse_init_and_defaults' into 3.0.x

* maint/3.0.x/update_suse_init_and_defaults:
  Update suse puppet.spec for Telly
  Update suse client.init for new pidfile, process name
  (#16801) Update suse server.init and remove mongrel refs
  Remove unused suse packaging files
  Update redhat logrotate to signal correct process
Maint: Document every terminus, especially static_compiler

Many termini were added to the codebase without a desc string. This commit
adds one to every extant terminus, although the instrumentation ones simply
say "undocumented."
Docs: Clarify that the "puppet" filebucket is magic to the static compiler

When Jeff was documenting this, he was tripped up for an extended period by
the necessity that the filebucket be named exactly "puppet". This is
non-obvious enough that we should always mention it in the same breath that we
mention the static compiler's existence.