Cleanup the tasks and memory contexts in dns_zone
Create per-thread task and memory context for zonemgr
Previously, the zonemgr created 1 task per 100 zones and 1 memory context per 1000 zones (with minimum 10 tasks and 2 memory contexts) to reduce the contention between threads.
Instead of reducing the contention by having many resources, create a per-nm_thread memory context, loadtask and zonetask and spread the zones between just per-thread resources.
After this switch to per-thread resources in the zonemgr, the performance was decreased because the memory context, zonetask and loadtask was picked from the pool at random.
Pin the zone to single threadid (.tid) and align the memory context, zonetask and loadtask to have the same thread-id, this sets the hard affinity of the zone to the netmgr thread.
Replaces: !5858 (closed)
Closes: #3226 (closed), #3159 (closed)