(PUP-3609) Always pass exec's user parameter to Execution.execute

Previously, the base `exec` provider would check to see if the
resource's `user` parameter matched the current Process' effective uid.
If they matched, it would call `Puppet::Util::Execution.execute` with a
nil uid, since there's no point in switching uids.

However, it didn't handle the case when the resource's `group` parameter
matched the current Process' effective gid, nor when
`Puppet::Util::Execution.execute` is called from other places.

The previous behavior was added in PUP-2732 (commit 9c7cb196cb).
Since then PUP-3457 (commit 84ff1526e) was implemented so that
SUIDManager.change_XXX is a noop when the current effective uid matches
the desired uid, and same for gid.

This commit partially reverts commit 9c7cb196cb, so that we always call
`Puppet::Util::Execution.execute` with the `exec` resource's `user`
parameter. If it is the same as the current euid, then it will not be
changed (due to PUP-3457).

It preserves the behavior that puppet will raise an error if an `exec`
resource specifies a `user`, and puppet is running on Windows, or is not
running as root and the user doesn't match the current user name.