[TAS Component] Introduce compression for recording files
From oberien in #364:
Considering we're changing the recording-file format in a backwards-incompatible way, we should add zstd (or some other) compression at the same time. That'll reduce the filesize by a significant factor. However, it'll also require storing the recording file version in a different way to possibly change the compression at a later point.
If you want to do compression, you should probably find out which compression works best. The standard algorithms are gzip, xz and zstd. You should check compression and decompression performance and compression factor. With zstd it's even possible to create and use a custom compression table, which is optimal for a particular workload. That way we could improve zstd compression by creating a custom compression table just for recordings, such that often-repeated values (like the JSON keys) are compressed even better.
Regarding version encoding I'd suggest prepending the compressed data with an unsigned varint encoded number (see e.g. protobuf's varint encoding; iirc there is a rust library implement that).