Add a new allocator which uses zstd. This is derived from the sparse allocator, with the difference being that each page is compressed in memory using the Zstandard fast compression library. Creating ordinary filesystems filled with mostly text content gives me excellent compression ratios (up to 10:1), so this should allow much larger RAM disks. Of course since this is based on the sparse array work, it already supports huge virtual sizes. Note this means that nbdkit-basic-plugins (downstream in Fedora) will now depend on libzstd. This is an extra dependency, but seems OK since the library is small and doesn't depend on anything else except glibc. The alternative would be more awkward packaging - either splitting nbdkit-memory-plugin and nbdkit-data-plugin into separate subpackages, or somehow working out how to package the allocators as plugin-plugins.