(#15733) Remove mongrel support

This makes the built-in server always use WEBrick. For anything more
sophisticated you must set up an external server using Rack.

Paired with: Andy Parker <andy@puppetlabs.com>
(#15733) Remove servertype setting

This was only used to choose between WEBrick and Mongrel for the built-in
server. Since we've removed Mongrel it is now useless.

Paired with: Andy Parker <andy@puppetlabs.com>
(#15733) Simplify bindaddress logic for webrick

Since mongrel is no longer an option, the default bindaddress is always
0.0.0.0 and we no longer need any extra logic around it.

Paired with: Andy Parker <andy@puppetlabs.com>
(maint) Ignore the packaging workdirs

This patch adds the pkg and ext/packaging directories to .gitignore
(#13563) Verify CSRs against the embedded public key

This adds a verification check when signing a certificate to ensure proof of
possession of the private key used to sign the CSR.
(packaging) add ips packaging for solaris 11

This patch adds ips packaging support for using the packaging repo ips
tasks.

This checkin contains:
- ips_repo in buidl_defaults.yaml
- smf services for puppet master and agent (manifests and methods)
- rules for ensuring that the puppet is installed in correct places
- transforms on the manifest that ensures that correct permissions and
  attributes are set for files and directories.
(#15733) Use real arguments for Puppet::Network::Server

Puppet::Network::Server had a weird reimplementation of required arguments, so
this just uses the built-in language feature of required arguments to methods.
(#15733) Remove excess hash arguments for webrick

This moves from using an args hash to required positional arguments for
Puppet::Network::HTTP::WEBrick. Doing this revealed several places where
ignored arguments were passed in, including tests that implied these arguments
were necessary.
Merge pull request #1110 from pcarlisle/ticket/3.x/15733-remove-mongrel

Ticket/3.x/15733 remove mongrel
(13914) Fix ownership of log files

The puppet master creates log files while running as the root user,
then switches to running as the puppet user. This commit ensures it
will still have permission to write to the log file after switching users.
Do not change ownership of log file if on Windows
Handle chown failure
Merge branch 'sciurus-13914' into 3.x
Merge pull request #1108 from vrthra/packaging/ips_repo

packaging/ips_repo
Merge pull request #1106 from pcarlisle/ticket/3.x/13563-verify-crl

(#13563) Verify CSRs against the embedded public key
(#16275) Don't set $environment as a local fact

The environment set by set_local_facts was not always correct. Since the node
object should always have the correct environment now we should just use that.
Merge pull request #1115 from pcarlisle/ticket/3.x/16275-catalog-environment

(#16275) Don't set $environment as a local fact
(#7962) Added settings class for handling time intervals.

The DurationSetting converts strings with units into a number of
seconds, but more importantly guarantees that the setting will be an
integer. The following settings can now be specified as durations:

  configtimeout
  filetimeout
  waitforcert
  splaylimit
  runinterval
  rrdinterval
  ca_ttl

Since multiple settings can use this format, the description was removed
from `ca_ttl` to be added to the config section of puppet-docs.

Also note, since many of these settings specify sub-hour times, the unit
'm' was added for specifying times in minutes.
(#7962) Added rate-limiting logger utility

`Puppet::Util::Log::RateLimitedLogger` is a class that includes the
standard logging module and so responds to `info`, `warning`, etc. It
uses log messages themselves as keys to a hash that records the last time
they were logged and at which level. When a message is logged, it first
checks the record and ignores the call if the given time interval has
not yet elapsed since the last time it was logged.
(#7962) Added `from_instance()` method to base SSL class

Instead of creating certificates by turning OpenSSL::X509::Certificate
instances into strings then back into a new instance, just reuse them.
This method is on the base SSL class, so it can be used for keys,
certificate requests, etc.

The side effect of this change is that extracting the certificate 'name'
out of its subject is abstracted (`name_from_subject()`), and it no
longer calls downcase on the name. This is safe since it's downcased in
the base class constructor, and also provides a prettier 'name' if
needed.