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
yeah, ```AttributeModificationType.REPLACE``` means that all existing values are completely replaced by the values being provided. So, removing the objectClass from the set of values that will be set as the objectClasses means it will end up being removed