iterate: be more precise when detecting CNAME loops

Iterating over sibling sub-queries isn't precise enough,
and in particular in forwarding mode it reported non-existing loops.

Example ATM: www.dpo.cz - there forwarding spawns multiple sub-queries,
and one of those is a CNAME to another of them.  Due to them being siblings,
the old code misdetected that as a CNAME loop.  Now that we have these
cname_parent pointers, we can do a precise detection.
5 jobs for cname-loop in 78 minutes and 18 seconds (queued for 1 second)
Status Job ID Name Coverage
  Build
canceled build:linux:amd64 #72965
amd64 linux docker

passed build:linux:amd64 #14664
docker linux amd64

00:00:42

 
  Test
passed deckard:linux:amd64 #14666
docker linux amd64

00:00:30

passed respdiff:linux:amd64 #14667
docker linux amd64

01:18:18

passed test:linux:amd64 #14665
docker linux amd64

00:00:23