Add zstd support
In order to get this done now, rather than double some patches before
going to the tip of Phillip's tree, use a cherry picked patch from that
tree.
John Friend pulled together the patch written by Sean Purcell for upstream.
Paul Frields did some review, so I didn't need to.