(PUP-1426) Disallow Puppet SSL autodefenestration

The puppet cert command supports an '--all' and a '--signed' flag so
that operations take take a list of values can operate on matching
values without having to enumerate them. However these options would
also apply to the 'clean' and 'revoke' actions. This means that
accidentally running `puppet cert clean --all` promptly and without
warning revokes and then removes all certificates. In other parlance,
this kills the CA.

Because this command is extremely dangerous and doesn't have any sane
use cases that we could determine, this commit disallows using
'--signed' or '--all' with the 'clean' or 'revoke' options. If this
functionality is needed we can add a '--force' flag to allow this
operation later.
(PUP-1640) Add technology agnostic way of plugging in data modules/env

This adds extension points for plugging in and specifying use of
an implementatio of a data provider for environment and for modules.
The implementation allows one provider per environment, and one per
module.

This only adds the mechanism - it is configured, but not yet used.
(PUP-1640) Add seting to opt in to an environment based data provider

This adds the setting :environment_data_provider which is the name of a
registered provider (values are 'none' or 'function' by default).
(PUP-1640) Add Data Providers for environment and modules

Includes tests that:

* assert that data from a module has lower precedence that data from
  an environment
* the function data mechanism works for both env and module
* the function data mechanism calls the expected functions
* the configuration of extensions allowing the specification of
  data mechanism works for env and module.
* the data functions must return hash
(PUP-3282) Remove support for method access to variables in ERB templ.

This removes the deprecated support to produce lookup of variable
names when a missing method was invoked having the same name as
the variable.

This is now an error, just like calling any other missing method.
(maint) Remove Puppet::Provider model, apparently ancient
(maint) No longer necessary to gem install rgen

Puppet used to express gem dependencies on rgen in its Gemfile, packaging,
etc, but in PUP-2914 the rgen code was vendored into puppet, and the
dependencies removed.

However, the future parser setup step still tried to install the rgen
gem, but only when testing against git checkouts (effectively Solaris
and Windows).

Since rgen is vendored in puppet, it is not necessary to install the gem
during future parser testing.
Merge pull request #3365 from joshcooper/maint/stable/remove-rgen-install

(maint) No longer necessary to gem install rgen
(PUP-3624) Don't modify application-level options

The previous fix modified `face_base` so that if --debug/--verbose were
specified, it set the corresponding application-level options, like we
do for other types of applications, and called Application#set_log_level
to do the right thing.

However, faces will automatically take any application-level option and
dispatch it to the face application. And since --debug and --verbose are
global options, the face framework would report it as an unknown option:

   puppet module install foo-bar --debug
   Unknown options passed: debug

This commit modifies the base Application#set_log_level method to take
an optional set of options. This way face_base can specify the desired
log level without needing to modify the application-level options.
Non-face application continue to work as before.
(PUP-1640) Remove unused puppet model checker for catalog side effects

This removes the checker that is intended to check a puppet language
model for catalog side effects since it is not yet used. It can be added
again when functions written in the puppet language is added.
(PUP-1640) Fix formatting, typos, etc. found in review

* This removes the data.pp mentioned as the manifest in the
environment.conf file (unused and wrong)
* Typos in comments
* missing end of line on the last line in some source files.
Merge pull request #3364 from kylog/remove-provider-model

(maint) Remove Puppet::Provider model, apparently ancient
(PUP=2563) Remove 1.8.7 explanatory comments from acceptance tests
(PUP-2563) Remove fix for pup-2478, which was 1.8-specific
(PUP-2563) Update quickstart.md for which rubies puppet supports
(PUP-2563) Remove 1.8 dependencies from Gemfile
(PUP-2563) Remove 1.8.7 support
(PUP-2563) Remove 1.8.7 monkey patches

This leaves some monkey patches related to 1.8.7 but tied to other
code removals (rdoc, activerecord). It also leaves in a couple that
I wasn't sure about, so there may be more monkey patches to prune.
(PUP-2563) Update unicode.md to reflect a post-1.8 world
(PUP-2563) Remove workarounds for 1.8 behavior for hash.selecdt