libblkid: use VFS I/O operations in probe

Replace all direct I/O syscalls in the probe path with ul_vfs_*
dispatch functions that route through the pluggable VFS layer when
set, falling back to real syscalls otherwise.

Add ul_vfs_copy() to include/vfs.h for cloning VFS ops structs.

Changed call sites:
 - read_buffer(): lseek + read
 - is_sector_readable(): lseek + read, changed signature to take
   blkid_probe instead of bare fd
 - blkid_probe_set_device(): close
 - blkid_do_wipe(): lseek + write_all + fsync
 - blkid_free_probe(): close + free(pr->vfs)
 - blkid_clone_probe(): allocate private VFS copy via ul_vfs_copy()

Addresses: https://github.com/util-linux/util-linux/issues/4308
Signed-off-by: Karel Zak <kzak@redhat.com>
3 files changed