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
that actually raises up an interesting corner case this code doesn't address.

1. load user with cruPerson attributes for editing
2. remove cruPerson attributes
3. issue UserManager.update for unrelated attribute (i.e. our Self Service Flags)
4. the update will attempt to remove the cruPerson objectClass without removing the attributes that rely on that class. This will cause an Exception to be thrown.