(PUP-3479) Update Windows ffi dependency to new ffi

Ruby 2.1.3 on Windows requires ffi 1.9.5. Update our Windows dependencies
to allow 1.9.5+ to be selected.
(PUP-2706) Change adduser to useradd in postinst

There has been an intermittent error where the installation of
puppet-common is failing on Ubtuntu 14.04. This error is
```
chage: the shadow password file is not present
/usr/bin/chage failed with return code 15, shadow not enabled, password aging cannot be set. Continuing.
chfn: PAM: Authentication failure
adduser: `/usr/bin/chfn -f Puppet configuration management daemon puppet' returned error code 1. Exiting.
```

Though `chage` is complaining about the fact that shadow is not enabled,
it looks like the installation is failing sure to the `adduser` call.
The thought is that `adduser` does some things under the hood that
require PAM to be configured in the build environment, which it isn't.
If we change the call from `adduser` to `useradd`, hopefully we will not
run into this issue. Note: it is difficult to test this due to the
intermittent nature of the issue.

Also, since we're removing the use of `adduser`, we no longer need to
ensure that package is available on the system.
(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.
(PUP-3271) Remove filebucket support for pson
Merge pull request #3274 from kylog/issue/pup-3271/remove-filebucket-support-for-pson

(PUP-3271) Remove filebucket support for pson
Merge pull request #3270 from joshcooper/ticket/master/PUP-3609-superceded-by-3457

(PUP-3609) Always pass exec's user parameter to Execution.execute
Merge pull request #3225 from melissaanne/ticket/stable/adduser-intermittent-error

(PUP-2706) Change adduser to useradd in postinst
Merge pull request #3202 from MikaelSmith/maint/master/update-ffi-ruby-213

(PUP-3479) Update Windows ffi dependency to new ffi
(PUP-3275) Remove deprecated `from_pson` method

This commit removes the misnamed and deprecated `from_pson` method.
It is replaced by the `from_data_hash` method.

This commit is part of the Puppet 4 code removal effort.