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
This is more of a general best programming practice question. Our metadata is of different class types, and thus you implement `getImplMeta(...)` generically, enforcing expected class type internally. However, the use of generics is not sufficient for type checking the returned class when that class itself supports generics (e.g. HashSet<E>), which 
then elicits your use of `@SuppressWarnings("unchecked")` when storing generics classes in the meta data. I guess I'm asking if there is some solution that handles type checking of generic classes returned from generic methods?