Introduce msg.PackBuffer() - it's like msg.Pack() but can reuse a byte buffer
Introduce msg.PackBuffer() - it's like msg.Pack() but can reuse a byte buffer

msg.Pack() always allocates a byte slice. This is good for simplicity,
but in a serious application it's preferable to reuse byte slices to
reduce the GC overhead. This patch introduces a new public method:
PackBuffer(). It's exaclty like Pack() but is able to reuse a
given byte slice. It will still allocate a new slice if the given one
is too small.

janstk/dns,tempbottle/dns,jmhodges/dns,rolandshoemaker/dns,skyportsystems/dns,Git-Host/dns,curtiszimmerman/dns,FiloSottile/dns,asergeyev/dns,ym/go-dns,miekg/dns,modulexcite/dns,letsencrypt/dns,flebarbe/dns,bboreham/dns,josephyzhou/dns,ErikDubbelboer/dns,bragr/dns,hugozhu/dns,skynet/dns,ezoic/dns,benbearchen/dns,michaelharo/dns,Psiphon-Inc/dns,AlexCheong/dns,cloudflare/dns,tsenart/dns,jdef/dns