we expect the couch query for by_user_type(domain, child_type) to only return one result.  You would have one group for each user type that contained all of the users of that type.

Also, by_user_type is mainly to get the root users to start off the hierarchy, and validate_types is a bit of YAGNI here, although hsph does currently have groups for each user type.

It would probably make more sense to store the user type as an attribute of the user model and then have a bunch of CommCareUserRoles or something that don't themselves hold a list of users.