Fix overflow checking in archive_entry_sparse_add_entry()

gcc will optimize the overflow check x + y < 0 (assuming x, y >= 0)
into false, since signed integer overflow is undefined behavior in C.
Use a safe precondition check instead.
Limit write requests to at most INT_MAX.
This prevents a certain common programming error (passing -1 to write)
from leading to other problems deeper in the library.
Merge pull request #33 from xiw/overflow

Fix overflow checking in archive_entry_sparse_add_entry()
If seek fails, fail the xar read.  We should be able to do better than this.
Expose the generic archive_free hook