Since the packagecache is a global namespace and there are no particular
requirements on the source_filename (other than the file extension), we
should require the source_filename to be legible. Most upstreams use the
name of the archive's top-level directory, plus file extension(s).
Sometimes the top-level directory doesn't include a version number, in
which case we should allow adding one. And in cases where GitHub
generates an illegible top-level directory, we should allow using the wrap
name and version number. In general, though, we should reuse upstream's
filename if upstream provides one, so allow overriding the check in
unusual cases.