support updating objectClasses for a User

This PR does a few things:

- moves existing deactivatedUid and new objectClass meta-data to a common implementation meta-data HashMap.
- implementation meta-data is not observed for object equality
- updates objectClasses based on current state of User object
- always updates objectClass on object update
Another option is to create a ```StringHashSet``` class that extends ```HashSet<String>```. That would eliminate the nested generics, but mean creating a custom class to work around the issue.