Fix fingerprinting of recursive groups
In ticket #18733 (closed) we noticed a rather serious deficiency in the current fingerprinting logic for recursive groups. I have described the old fingerprinting story and its problems in Note [Fingerprinting recursive groups] and have reworked the story accordingly to avoid these issues.
One thing that I haven't quite convinced myself of is that one can't break the new story by transposing declarations in a sufficiently symmetric group. This requires a bit more reflection.
Fixes #18733 (closed).