(#21732) Allow SSL configuration based on Puppet PEM files

This commit introduces some functions for reading keys and
certificates from PEM files, and dynamically constructing java
KeyStore instances in memory without requiring a .jks file on
disk.

It also introduces some new configuration options that may
be specified in the `jetty` section of the PuppetDB config
to initialize the web server SSL settings based on your
Puppet PEM files.  This provides us with a path forward for
removing the `keytool` calls and such from the `puppet-ssl-setup`
script in the future.
(#21732) SSL PEM parameter name changes & puppetdb-ssl-setup handling for pem files

This changes puppetdb-ssl-setup to assist setup of PEM based files instead
of keystore based files.

The script however tries to be delicate around legacy setups, failing to run
if the user still looks like they have a keystore setup without the -f
switch. This is so users who already have keystore based setups can choose
to migrate when they wish, instead of a package upgrade forcing them to.

Users who install from scratch however, will now have puppetdb-ssl-setup
copy the certificates from Puppet into the correct places for them and
configure SSL as before, but instead with PEM files.

This patch also changes the names of parameters from the original patch to
remove the puppet-agent-* prefixes.

Documentation that relates to puppetdb-ssl-setup has been modified to suite
the new behaviour.

Signed-off-by: Ken Barber <ken@bob.sh>
Upgrade bcpkix-jdk15on to latest revision

Signed-off-by: Ken Barber <ken@bob.sh>
(#21372) puppetdb-ssl-setup should diff all pem files

Now we check the integrity of all PEM files with the original puppet ones.

Signed-off-by: Ken Barber <ken@bob.sh>
(#21372) Remove unused require for ring.adapter.jetty in ssl.clj

Signed-off-by: Ken Barber <ken@bob.sh>
(#21372) Use pos? instead of > 0 in when condition

Signed-off-by: Ken Barber <ken@bob.sh>
(#21372) Add new missing? util function for detecting missing items in a collection

This introduces a new function `missing?` which is the inverse of contains?. It
also operates with multiple key items to match, returning true only if all
items are missing from the specified collection.

Some code in services.clj has been modified to make use of this function.

Signed-off-by: Ken Barber <ken@bob.sh>
(#21372) Adapt a fast returning version of missing? using reduce

This patch includes Deepak's alternative to missing? which returns fast if any
any results of contains? for each of the keys is true.

Signed-off-by: Ken Barber <ken@bob.sh>
Merge pull request #578 from kbarber/feature/master/no-more-keystore

(#21732) Allow for PEM based files instead of JKS