(#17007) Restore pre-3.0 execute semantics

Prior to 3.0, the failonfail and combine arguments defaulted to true
provided no other arguments were specified. However, if any argument
was specified, even an empty array, or unrelated arguments,
e.g. stdinfile, then failonfail and combine defaulted to false.

These semantics don't make sense, but it's how failonfail and combine
have worked since 2fcbc7f5433fab36b60bedf5a97dd610ef231721 (0.22.4)
and efe9a833c43358e23ae252456a07b37cc9904a0a (0.24.7),
respectively. Changing the semantics breaks providers that specify an
argument, e.g. squelch, and are not expecting an ExecutionException to
be raised.

For now, this commit just restores the pre-3.0 semantics for execute.

In the future, we should create a new execute method with the desired
semantics, and then deprecate the old execute method, filed as #17603.
(#17007) Restore pre-3.0 execute semantics when calling deprecated method

Previously, Puppet::Util.execute(command) had different semantics than
Puppet::Util::Executor.execute(command) due to the `arguments` parameter
defaulting to an empty hash.

As a result, the former defaulted failonfail and combine to false,
whereas the latter defaulted them to true.

This commit changes the Puppet::Util.execute method to pass its
arguments directly through. The only difference between the two is that
the former issues a deprecation warning.
(#17007) Make failonfail and combine explicit

Previously, many providers called Puppet::Util.execute with an
argument(s), which had the side-effect of defaulting failonfail and
combine to false.

This commit does not change any behavior. Instead in places where
execute is called with arguments, it explicitly sets failonfail and/or
combine to false. This way it's less confusing as to what the provider
is doing.
(#17007) Restore exec terminus behavior

Previously, the exec terminus attempts to call the execute method with
failonfail true semantics, but due to commit 8b76be30 for #3836, which
added the combine parameter, the execute method was actually being
called with failonfail false. As a result, the ExecutionFailure
exception was never being raised.

This commit restores the failonfail true semantics by making it
explicit, while preserving the combine => false behavior implemented
for #3836.
(#17007) Restore pre-3.0 command execution behavior

Prior to 3.0, commands were executed using Puppet::Util.execute
without any arguments, so failonfail and combine were true. In commit
89d57e72a, released in 3.0, provider commands were modified so that
the provider could supply options to the execute method. In doing so,
the default options were set to an empty hash, changing the default
failonfail and combine arguments to false.

This commit restores the pre-3.0 command execution behavior, such that
failonfail and combine are true.
Merge pull request #1276 from joshcooper/ticket/3.0.x/17007-restore-execute-semantics

(#17007) Restore execute semantics
Merge remote-tracking branch 'upstream/3.0.x'

* upstream/3.0.x:
  (#17007) Restore pre-3.0 command execution behavior
  (#17007) Restore exec terminus behavior
  (#17007) Make failonfail and combine explicit
  (#17007) Restore pre-3.0 execute semantics when calling deprecated method
  (#17007) Restore pre-3.0 execute semantics