reimplement zstd compressor without sync.Pool
The Encoder and Decoder types in github.com/klauspost/compress/zstd offer
EncodeAll and DecodeAll functions which can be used concurrently, which
should allow us to drop the complex finalizer setup required to avoid
leaking resources.
While go-grpc uses an io.Reader/io.Writer based API, it appears that it
uses buffers to compress/decompress data in independent chunks rather than
streaming large amounts of data. So this should line up with the EncodeAll
and DecodeAll functions mentioned above.