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.