(PUP-3201) Treat :undef as PNilType

For PUP-2857 :undef was changed from being a PNilType to a PRuntimeType.
This stopped the undef literal in the language from being able to be
assigned to Optional parameters. However, this only happened when the
undef was the default expression for the parameter.
Merge pull request #3194 from zaphod42/issue/stable/pup-3201-undef-not-working

(PUP-3201) Treat :undef as PNilType
(PUP-3244) Fixup test for windows and future parser

The test failed on windows nodes because the acceptance test wasn't
using the `puppet` method from beaker. The test failed on future parser
due to the bare file mode, in 4.0 only string modes will be allowed.

This commit fixes up those issues, and removes the
`acceptable_exit_codes => [0]` since that is the default behavior.
(PUP-3401) Fix type calculations of "all Patterns"

The type calculator did not correctly compute assignability for
a non parameterized Pattern. Such a Pattern is equal to "any string",
and is thus assignable from any other Pattern, Enum or String.

This was missing in the calculator and this resulted in Pattern neither
being equal to, less than, or greater than parameterized patterns.
(PUP-3357) generate implicit names for ssh_authorized_keys if needed

Generated resources from the user type share an empty resource name
if more than one unmanaged key has no comment in the authorized_keys
file (the comment is used for the namevar). This leads to duplicate
declaration errors when the user tries to purge those keys through
the user { purge_ssh_keys } parameter.

Make the provider use an internal pseudo-name in such cases. Generated
resources get the same respective pseudo-name for successful purging.
It is composed of the file name and a numeric index.
(PUP-3357) unit tests for the purging of multiple unnamed keys

Just makes sure that the user type and ssh_authorized_keys provider
generate pseudo-names for keys following the same pattern.
(PUP-3357) integration test for purging of unnamed ssh authorized keys

Add an integration test with an ssh keyfile in which two keys have no name
and make sure that both are successfully purged.
Merge pull request #3164 from ffrank/ticket/3.7.x/PUP-3357-purge-unnamed-ssh-keys

(PUP-3357) purge unnamed ssh keys
(PUP-3334) Clear environment settings caches

Prior to this commit, environment settings were not being updated
when environment.conf was changed, even if environment timeout had
expired. This was because they were being cached in places in
Puppet.settings that were not being cleared.

Now, all the cached data for a particular environment is cleared
when the environment timeout expires.
(PUP-3291) Remove autoload from puppet/interface
(PUP-3294) Remove :parent from newtype options
(PUP-3250) Remove face "secret_agent"

This removes the application and face called "secret_agent"
(PUP-3250) Update documentation after removal of "secret_agent"

As a consequence of remoging the face and application "secret_agent"
the yard documentation and manpages needed regeneration to get rid
of mentions of "secret_agent" as well as documentation generated for
the now removed face/application.
(PUP-3334) Add test to ensure cache is cleared

In order to ensure that we don't encounter this issue again, add
a test case to environments_spec to ensure that the cache is being
properly cleared.

Additionally, fix a small bug in environment's list method where
a string should been converted to a symbol.
Merge pull request #3197 from hkenney/issue/stable/pup-3334_fix_environment_conf_not_changing_issue

(PUP-3334) Fix issue around settings not updating with environment.conf
(PUP-3311) Remove deprecated provider methods
(PUP-3311) Remove provider model attribute

The provider model attribute was renamed to resource_type in 1d23013a
and a stub attr_reader was kept around since then. 7 years is a
reasonable time to maintain compatibility, but it's time to move on and
let the model attr_reader go out to pasture.
Merge pull request #3195 from hlindberg/PUP-3401_fix-pattern-type

(PUP-3401) Fix type calculations of "all Patterns"
Merge pull request #3200 from kylog/issue/pup-3294/remove-parent-from-metatype

(PUP-3294) Remove :parent from newtype options
Merge pull request #3201 from hlindberg/PUP-3250-Remove-secret_agent

(PUP-3250) Remove secret agent