crcopysafe() attempts to crextend() the new ucred's group allocation to
fit all of the groups from the old ucred, but for certain values of
ngroups_max we can end up with a larger-than-max cr_asize as crextend()
rounds up the allocation to the next power-of-2.
This was not a problem before be1f7435ef218b1 because the effective max
storage was NGROUPS_MAX + 1 (1024) to account for the egid being
included in cr_groups. Now that we're back down to NGROUPS_MAX, the max
allocation will tend to be 1024 and exceed our max groups.
Switch crcopysafe() to extend until we have enough allocated to fit
the previous group set, and call crextend() with the number of groups
that the old ucred had. This avoids relying on implementation details
of crextend() up-sizing our requests and ensures we only have as large
of an allocation as we need to fulfill the request.