(maint) Correct ssl/puppet_cert_generate_and_autosign test to do what it says it's doing.

Prior to this commit, the test was incorrectly specifying autosign=false
when attempting to test the behavior when autosign is true. This looks
like a simple copy-paste error as the test right above is exactly the
same. This commit correctly specifies the autosign value.
(PUP-1177) allow parsedfile providers to choose a default mode

The ParsedFile provider baseclass and its companion Util::FileType module
employ Tempfile for pre-buffering generated files. If there is no actual
file at the final desination yet, copying the tempfile will preserve its
permissions, which implies a mode of 0600.

This is not desirable for all files managed by ParsedFile providers. Therefor,
the ParsedFile provider baseclass now provides an interface to change this
default mode by overriding a method.
(maint) move the file mode tests to the files spec module

It is helpful to have a simple helper method to match desired file modes
from spec tests.
(PUP-1177) make sure ssh_known_hosts is not created with mode 0600

The default mode for files that a ParsedFile provider newly creates
is 0600. This makes no sense for the ssh_known_hosts file, because it
contains public information that adds to security for all users.
(PUP-1177) update ParsedFile provider unit tests

The constructor for the :flat filetype accepts a second argument now.
This second argument must be taken into account when stubbing specific
invocations.
(PUP-1177) restore :ram FileType compatibility

The :ram filetype, as an alternative to :flat, is often used for spectests
of ParsedFile providers. The providers normally use the :flat type, but through
mocking, are made to use :ram in test context. Since the providers often pass
both supported arguments to the :flat constructor, it must be accepted by the
constructor of the :ram type as well.
(PUP-2079) Add no-op PMT generate template format.

Prior to this commit, the mechanisms available for writing skeletons containing ERB templates
were awkward at best (and broken at worst).

This change adds a new template extension for module skeletons that has the (somewhat counter-
intuitive, when described this way) behavior of performing no alterations to the given template.
In this way, one could place a file like `foo_bar.erb.template` in their module skeleton, and
generated modules would contain a file named `foo_bar.erb` with the exact contents of the
`.template` file.

This will also close pull requests #2468 and #2688.
(maint) Fix Pattern / Variant Type assignability

This fix corrects Pattern.assignable?(Variant) which was not
correctly supported in the type calculator. (It gave up if t2
was not a String or an Enum). Now, if t2 is a Variant,
the check recurses to the types described by the enum.
(maint) Fix Enum / Variant assignability

The type calculator did not correctly compute assignability
for an Enum when assigning a Variant type. Now, all variants
are checked if they are assignable to the enum type.
(maint) Fix problem with Enum subset not matching Enum

This corrects a problem where Enum[a] was not assignable to
Enum[a,b], since it is a subset, it should be assignable.
(maint) Add the ability to inject calling scope into function.

The InteralFunction API now has the ability to "inject" and weave
the calling scope into the dispatched arguments by calling
the method scope_param() when building the dispatcher.
(PUP-2845) Move the epp function to the 4x function API.

This moves the epp function to the new function API.
The type checking is much approved as a consequence as the function
is now protected against spilling non variable name compliant
variables into the scope.
(PUP-2845) Move the inline_epp function to the new function API.

This moves the function inline_epp to use the new function API.
This also improves the argument checking since it is not not possible
to leak non variable name compliant variables into the scope.
(PUP-2845) Remove comment about skipping mapping in call_function

The comment refers to removed behaviour. Now, since the epp
functions are moved, there is also no need to map them (there are PRs in
flight that will add such behavior).
(PUP-2104) Fix facter terminus to print out fact files.

Prior to the refactoring of the facter terminus, the terminus loaded
module facts directly.  This is no longer the case and instead facter
always loads the facts itself.

The previous implementation logged an informational message displaying
the path to each fact script it found.  The new behavior only printed
the directory that would be searched for facts.

Given that this information may be useful to module developers and to
maintain existing output behavior, this change restores the previous
output behavior but still relies on facter to load the facts.
(PUP-2104) Update define_settings documentation for default option.

Updating the documentation for define_settings to match the recent
changes that allow a Proc to be passed and lazy-evaluated for the
default value.
Merge pull request #2816 from peterhuene/pup/2104

(PUP-2104) Fix facter terminus to print out fact files.
(PUP-392) FFI ADSI GetComputerName /Add Group SID

 - Some existing tests were using Sys::Admin.get_login to get the
   current username.  Implement this same functionality in
   Puppet::Util::Windows::ADSI::User.current_user_name by making
   Win32 API call directly instead of relying on sys/admin.  Note that
   unlike GetComputerNameW, GetUserNameW returns a length
   including the trailing NULL.
 - Further, replace calls to Sys::Admin::get_user(name).sid and
   Sys::Admin::get_group(name).sid with their respective equivalents in
   the ADSI classes, namely ADSI::User.new(name).sid and
   ADSI::Group.new(name).sid.  Note that Sys::Admin returned a string
   while ADSI returns a SID object which must be converted to a string.
 - To support retrieving the ADSI Group sid, add a new class member
   and method identical to the one on ADSI User.
(PUP-392) Remove sys-admin gem

 - Update inline strings mentioning it as a dependency
(PUP-2737) move regex from ssh_authorized_key provider to the type

Defining the regular expression for the ParsedFile based provider of
the ssh_authorized_key type on the type level rather that directly in
the provider code, it becomes easily possible to reuse it in other types.