Add a new zip source
This is equivalent to the tar source, but for Zip archives.
Some refactoring was necessary first, introducing a new base class for downloadable single-file sources, which allows the tar and zip source implementations to share most of their code.
Edited by Mathieu Bridon