update: get a better error from libarchive for open failures

Goddamnit libarchive... You claim that archive_error_string is better
than strerror(archive_errno()), but it's hard to say that "Failed to
open '/var/cache/pkgfile/community.files~'" is better than "Permission
denied". I know that I tried to open it... WHY DIDN'T IT WORK?!?!

This also fixes some potentially flaky return values from the archive
opening.