(PUP-3232) Prevent group duplication when group list created from multiple sources.

On a Puppet node that has multiple group directories (e.g. `/etc/group` and LDAP) puppet may end up with groups listed multiple times in a user's group list. This leads to a state of constant change where puppet detects the muliple entries and tries to remove them (when nothing is wrong).

This change ensures that a user's group list only contains unique entries and no duplicates.

(We have local groups as a fail-over when LDAP is unavailable as we use groups for sudo authentication)