(maint) Fix spelling in a comment.
(#23349) Create autosign setting for input validation

This commit adds adds a new 'autosign' setting for the autosign command.
There are two reasons we're doing this: first, setting validation is
best done with a new setting class, and second, defining a hook for a
setting that might interpolate an application setting can cause the
interpolation to fail. By moving validation to a setting class, we can
sidestep this issue for now.

Jira issue: PUP-932
(#23349) Defer setting hooks to post app init when needed

Defining a hook for settings can force that setting to be interpolated
before all settings are loaded, which will fail. This commit allows
setting hooks to be deferred after application initialization, so that
values can be properly interpolated before invoking the hook.

Jira issue: PUP-932
(#23366) Ensure we require ffi before using it

We use ffi on windows in 4 files, but only required it in 3, which could
prevent puppet on windows from running with the error:

    uninitialized constant Puppet::Util::Windows::Security::API::FFI (NameError)

This commit ensure we require ffi before using it.
Merge remote-tracking branch 'joshcooper/ticket/stable/23366-require-ffi' into stable

* joshcooper/ticket/stable/23366-require-ffi:
  (#23366) Ensure we require ffi before using it
Merge branch 'stable'

* stable:
  (#23366) Ensure we require ffi before using it
Merge branch 'pr/2127' into stable

* pr/2127:
  (#23349) Defer setting hooks to post app init when needed
  (#23349) Create autosign setting for input validation
Merge branch 'stable'

* stable:
  (#23349) Defer setting hooks to post app init when needed
  (#23349) Create autosign setting for input validation
Merge branch 'master' of https://github.com/puppetlabs/puppet