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 think the fact that the meta-key is private and you need a specific meta-key to get/set the value should be enough protection. For other code to manipulate the stored classes they would need to manually lookup the key before being able to access the private data.