As discussed with with Jon, there is room for improvement in how the memstore is flushed to disk.
Currently only expired KVs are pruned before flushing, but we can also prune versions if we find at least maxVersions versions in the memstore.
The same holds for the new minversion feature: If we find at least minVersion versions in the store we can remove all further versions that are expired.
Generally we should use the same mechanism here that is used for Compaction. I.e. StoreScanner. We only need to add a scanner to Memstore that can scan along the current snapshot.