This diff adds the `keyserver` support for creating new roles with a set of permissions. `configurableCommunityPermissions` was introduced in the previous diff, and those are the user-selectable permissions that are provided here, and we introduce `guaranteedCommunityPermissions` here and merge the two arrays to derive a set of permissions for the new role.
The reason I named things `modifyRoles` / `RoleModification`, as opposed to `createRole` / `RoleCreation` is because I plan to re-use this code as much as possible for the `edit_roles` flow. Because of this, I intended to name these functions / types as something that could be used both across creating roles and editing roles.
Only adding @ashoat as a reviewer here since it 1) directly addresses his feedback about introducing the `guaranteedCommunityPermissions` alongside its callsite, and 2) it involves community permissions and I'm not sure who has the most context on them.