(#14072) Allow faces to inline global setting docs

Add `display_global_options` to Face DSL.
Add `environment`, and `modulepath` as display_global_options for existing
module face.
Add `type` for typed settings.
Add display_global_options to exising help and man faces.
(#13948) $libdir not in $LOAD_PATH

Change :call_on_define to :call_hook with values of
:on_define_and_write, :on_initialize_and_write, and :on_write_only.
Make hooks for $libdir, $factpath, and $storeconfig new value of
 :on_initialize_and_write to take advantage of bootstrapping sequence.
Change Puppet::Util::Settings to call hooks on settings designated as
:on_initialize_and_write immediately after initialing default
application values.
Deprecate Puppet::Util::Settings::StringSetting#call_on_define.

This change is backward compatible, although :call_on_define is
deprecated and should be changed to :call_hook => :on_define_and_write.
This change should also be forward compatible if we decide to call hooks
at other portions of the application bootstrapping lifecycle.

This commit fixes the problem that the default libdir was not being
added to Ruby's $LOAD_PATH properly.

Prior to this commit, the hooks for $libdir and $factpath were not
getting called unless explicitly overridden in the code. This meant that
the default $libdir was not part of $LOAD_PATH and the default $factpath
was not searched for facts.  This commit fixes those problems by
enabling settings to declare when the hook should be called.  A hook can
be only only when a value is overwritten (:on_write_only), which is the
default. A hook can be called with the default value when when the
setting is defined (as soon as Puppet::Util::Settings.define_settings is
called) (:on_define_and_write), in addition to any time the value is
overwritten. A hook can be called with the default value during
application initialization (:on_initialize_and_write), in addition to
any time the value is overwritten.

We've added the call to the initialize hooks in two places because we
have to deal with the bootstrapping of applications. We need to attempt
to parse command line options and the configuration file and call the
hooks. Then we need to do it again after the application is loaded
because it could very well have changed important things like $vardir,
which generally affects $libdir.
Merge pull request #703 from cprice-puppet/feature/master/filter_resource_type_by_type

(#14137) usability improvements to resource_type API
Merge pull request #690 from jeffweiss/ticket/master/14072_allow_faces_to_inline_setting_docs

(#14072) Allow faces to inline global setting docs
Merge pull request #702 from jeffweiss/ticket/master/13948_libdir_not_in_load_path

(#13948) $libdir not in $LOAD_PATH
Merge branch 'puppet-cleanup/master/bad-settings-specs' from cprice

Conflicts:
	lib/puppet/util/settings.rb

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
(#13429) refactor some settings initialization

This commit does the following:

* Move some of the settings initialization logic from
  Puppet::Util::CommandLine into the Puppet::Util::Settings class,
  so that it can be called by non-CommandLine code
* Rename / deprecate / clean up some methods related to parsing
  config files to try to promote a cleaner API for interacting with
  settings.
* Clean up / improve options for external tools to
  request puppet settings initialization.