1) Some payloads are short-lived (e.g. allocated on stack) and we need
to make a copy of them if the iteration over protocol layers becomes
asynchronous.
2) The `pl_dns_stream_wrap` function used a mempool belonging to its
session-wide context. Some sessions may live for a long time, which
could potentially lead to needlessly long-lived memory allocations.
Both of these problems are solved in this commit by using a new
`knot_mm_t pool` field in `struct protolayer_iter_ctx`, which lives only
for a single submit (and survives asynchronicity). The whole pool is
then freed all at once when the `struct protolayer_iter_ctx` is
finalized.