Ability to read ZIP and GZIP files

All methods in Readable accepting one or more File objects will see if the
file contents are compressed with ZIP or GZIP format and decompress on the
fly while reading.
After this PR is merged, we should look into moving this test utility to a different package and replacing the usages of `TargetDirectory.TestDirectory` with this class.