Properly call indirector when storing file content

Prior to this commit, the static compiler did not specify to use
indirection when finding file content nor when saving a file to the
filebucket.  This commit properly calls the indirection method to
resolve the issue
(#8235) Add plug-in system for tools like Hiera

A new data_binding indirection is being added for interfacing with
tools like Hiera; and provides an "in-dsl" solution for data separation.
Data exposed by tools like Hiera will be made available during parse
time.

For example, if we had the follow class definition:

    class nginx($port=80) { ... }

And it was declared without specifying the `port` attribute:

    class {'nginx': }

The above would result in a data lookup to the data_binding backend for
the following namespaced key:

    nginx::port

Namespaced keys are being used to prevent the pollution of the global
namespace. The convention for namespaced keys is a combination of the
class name and the class parameter being resolved.

Example:

    class ssh::server($port) { ... } # Lookup ssh::server::port

The data_binding backend would need to provide a value for the
namespaced key or return nil. When a nil value is returned by the
data_binding backend the class parameter default, if available, will be
used instead.

It should be noted that class parameters are looked up one at a time
with no assumptions in regards to the performance of data lookups. It's
the responsibility of the data_binding backend to handle any performance
requirements including caching.

This patch also adds two new terminii: hiera and none. The "none"
terminus implements a find method that always returns nil; it's being
set as the default data_binding terminus to allow end-users the ability
to opt-in and maintain backwards compatibility with older versions of
Puppet.

The "hiera" terminus implements a find method that delegates class
parameter lookups to Hiera using the Hiera Ruby API.

Two new configuration settings are being added:

    [main]
      hiera_config = "$confdir/hiera.yaml"
      data_binding_terminus = "none"

Updated specs are included in this patch
Update use of reparse to reparse_config_files

The method in settings was renamed, but this use was missed.
Merge remote-tracking branch 'pcarlisle/repase_config_fix'

* pcarlisle/repase_config_fix:
  Update use of reparse to reparse_config_files
Merge pull request #715 from ccaum/static_compiler_fix

Properly call indirector when storing file content
Merge pull request #718 from kelseyhightower/ticket/master/8235_plugin_system_for_tools_like_hiera

(#8235) Add plug-in system for tools like Hiera
Merge branch '2.7.x'

* 2.7.x:
  Revert "Fix incorrect argument handling for expire in NodeExpirer"
  Fix #14123 for Windows
  Fix incorrect argument handling for expire in NodeExpirer
  Fix filebucket specs on Windows
  (#8778) Make '' == undef commutative in the DSL
  (#14173) Enforce that filebucket paths must be absolute
  (#14127) Add integration tests for ssh_authorized_key
  maint: refactor integration specs for ssh_authorized_key
  (#14127) ssh_authorized_keys grammer fails on blank lines.
  (#14123) Puppet shouldn't explode if PATH contains ~nonexistent_user

Conflicts:
	lib/puppet/provider/ssh_authorized_key/parsed.rb
	lib/puppet/util.rb
(#13559) Promote new console output prototype to official.

This makes the prototype new console the official, default, system-wide
console in Puppet.  This has some small, visible effects on error reporting
across the board, but more importantly sets the stage for broader changes to
improve user experience on the command line in future.

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>