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
I'm going to implement 3 before we merge to prefer guaranteed correctness over update optimizations. So, any attribute group that updates attributes in any of our 3 classes.

We can revisit this in the future post-merge to maybe not perform an unnecessary update as frequently.

Realistically updates should be relatively infrequent compared to reads, so this would have a very minimal performance impact. In fact our current implementation in production updates all modifiable attributes (including objectClasses) on every update.