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 and was queued for 1 second