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, it is inefficient (maybe there is some internal eDirectory logic to recognize when an update is replacing values with the same values). I also don't care for the fact that on every update it tries to update the objectClasses.

But there are a few things that are restricting it.
1. where we generate the set of objectClasses has no idea if they are being generated for a create or update request. (we could imply one or the other from the internal meta-data, but we don't know for sure)
2. If we do piecemeal add/removes, we have to make sure they are based on the current state of the object in eDirectory, otherwise it will throw an Exception. This gets tricky if you start getting multiple threads updating the same user at once, which is exacerbated if you take a lazy approach to updates (load object wait a couple minutes for user input, update object in memory, then save that object)
3. if we include objectClass in attribute update groups like all other user settable attributes, which groups do we include them in, almost all of the updates touch data tracked by one of our custom classes. There is the option that we could assume thekeyAttributes and relayAttributes are always set on creation and don't need to be updated, and just update objectClasses when a changes is made to cru person attributes.