Added AI logging when required role checks fail during DM
RoleDefinition can define sub-roles, requirement checks include checks
Leatherworker is a sub-role of Crafter
Cleaned up how we check for active roles throughout various systems, Unit.Roles no longer publicly exposes the dictionary of role states, instead we HasRole (which includes checking for sub roles) or IsRoleActive