Use best Gzip compression, don't write extra header fields
Make _get_parent_download() subroutine private because it is not being used in other places than MediaWords::DBI::Downloads::Store
* Rename + refactor download storage packages in MediaWords::DBI::Downloads::Store::* to more generic MediaWords::KeyValueStore::* packages which could be used by other parts of the code to store key-value data of their own (e.g. the CoreNLP annotator)
* Make newly created key-value store packages use an constructor argument which would determine the specific location that will be used to store instance data (e.g. MongoDB GridFS database name, PostgreSQL table name, Amazon S3 bucket, etc.)
* Rewrite configuration in mediawords.yml to support multiple MongoDB GridFS databases / Amazon S3 buckets for various kinds of data
* Add a helper subroutine to MediaWords::Util::Config which would detect an old configuration syntax and die() while also suggesting the user to update configuration to an updated syntax
* Move get_data_content_dir(), get_download_path() and two helper subroutines from MediaWords::KeyValueStore (ex-MediaWords::DBI::Downloads::Store) to MediaWords::Util::Paths because they seem to belong there better
* Implement placeholder subroutines remove_content() and content_exists() in <...>::Remote, <...>::DatabaseInline, <...>::Tar key-value store packages to comply with the Moose-provided interface
* Implement remove_content() and content_exists() in <...>::LocalFile key-value store package