unsqfs: Don't malloc "struct dir"

Instead, have the caller take care of allocation. In practice, we have
two callers: one which can allocate on the stack and the other that can
allocate as part of "struct PkgData".
unsqfs: Cleaned up argument types and order of read_fs_bytes()

In particular, stick to the convention of passing buffer size as
size_t in the argument after the buffer pointer.
unsqfs: Cleaned up arguments of squashfs_uncompress()
unsqfs: Cleaned up arguments of read_compressed() and read_uncompressed()
unsqfs: Cleaned up arguments of read_metadata_block() and read_data_block()
unsqfs: Fixed bug when metadata crosses block boundary

The destination pointer wasn't updated after a copy, so the second half
of the data would be copied over the first half instead of after it.

Bug was found using Valgrind's memcheck, which flagged a later strcpy
as reading uninitialized memory.