archive: fix reading files when size not set

File size can be unset in the archive therefor is set to zero.
This breaks reading file content using fuse. Determine file size
by reading data blocks to fix it.

https://bugzilla.gnome.org/show_bug.cgi?id=670534
archive: fix segfault when libarchive fails

When libarchive fails g_vfs_job_failed is called even as
g_vfs_job_succeeded which cause segfault. Set GError instead of
g_vfs_job_failed to fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=670534
archive: fix wrong data types

Libarchive 3.0 changed public interface to use int64_t uniformly
instead of off_t, ino_t, uid_t, gid_t, and dev_t.

https://bugzilla.gnome.org/show_bug.cgi?id=670534