Cleanup error handling in btrfs_clone
Fix missing punctuation in error messages in fdup.c
Be more consistent with feature test macros

* Define _POSIX_C_SOURCE everywhere to get a compliant environment
* Define _XOPEN_SOURCE because glibc wants it
* Define _FILE_OFFSET_BITS everywhere to get large file support

Amendment to HEAD^2
Remove mentions of thread_local

This makes the code thread-unsafe. Should be no problem as it probably wasn't
thread safe before and the code does not use threads. Because this was the only
C11 feature used in this code, this commit also changes the standard used to
compile the code to C99.
Try to preserve times, ownership and permissions on overwritten files

Ownership and mode assignment operations are skipped if a symlink is created,
as they don't make sense on a symlink.
Add option -p

If -p is provided, fdup refuses to overwrite files if it cannot completely
preserve the file's access modes, ownership, modification and access time.
Document -p
Add a paragraph to fdup.1 about its exit status
Improve efficiency on large files

If a file happens to be larger than SHORT_HASH_SIZE = 16*1024*1024, hash only
the first SHORT_HASH_SIZE bytes before hashing the whole file. This improves
behavior on large files of equal size that are likely different.