The original design had a lose coupling of user/group factories and the
user/group manager. It was left up the other objects decide how the
Principal/Group objects would get instantiated and Manager itself was
only responsible for coupling the objects to/from the user store.
The result was the it was easily forseable that the various management
methods on the Group object would not work. It also required the system
to first create a user/group object and then use the manager to update
the outside store.
Instead it makes more sense to follow an entity bean like model. Meaning
the creation of a User/Group object should automatically create the object
in the user store. Any update to the group using the various group methods
*MUST* update the groups. The default implementations will choose to make
calls back to the manager.