Break lock order loop by sending TAT in an event
The dotat() function has been changed to send the TAT query asynchronously, so there's no lock order loop because we initialize the data first and then we schedule the TAT send to happen asynchronously.
This breaks following lock-order loops:
zone->lock (dns_zone_setviewcommit) while holding view->lock (dns_view_setviewcommit)
keytable->lock (dns_keytable_find) while holding zone->lock (zone_asyncload)
view->lock (dns_view_findzonecut) while holding keytable->lock (dns_keytable_forall)
(cherry picked from commit 3c4b68af)
Closes #2156 (closed)