Instead of creating new memory pools for each new dns_message, change dns_message_create() method to optionally accept externally created dns_fixedname_t and dns_rdataset_t memory pools. This allows us to preallocate the memory pools in ns_client and dns_resolver units for the lifetime of dns_resolver_t and ns_clientmgr_t.