posixGroup membership queries from Domain

`GitHub::Ldap::Domain#is_member?` doesn't correctly validate group membership for posixGroups due to some assumptions by the `Filter#member_filter` about the DN.

This changes the `Filter#member_filter` method to accept a `Net::LDAP::Entry` object and maps the correct group type with the correlated member attr (which, for posixGroup, is the member entry's CN).

@michaeltwofish `dn` is the only value that `Net::LDAP::Entry` returns as a String (I believe), everything else is returned as an Array (usually of a single value). Strictly speaking, it's possible to have multiple values for `uid` or any other field. For instance:

```
>> entry['uid']
=> ["mtodd", "matttodd"]
```

This gracefully handles it without blindly calling `first`, ignoring multiple values. I'm happy to revisit this later unless you think it's a blocker.

NOTE: if we don't explicitly handle the `Array` we are returned here, we result in malformed filter condition. Observer:

``` ruby
>> entry = find_entry # any will do
>> Net::LDAP::Filter.eq("uid", entry["uid"]).to_s
=> (uid=["mtodd", "matttodd"])
```

That's an invalid condition statement. Searching with that filter produces this error:

```
NoMethodError: undefined method `gsub' for ["mtodd", "matttodd"]:Net::BER::BerIdentifiedArray
```

:sparkles: