libblkid-tiny: use separated buffer for each block device read
This allows reading multiple chunks of block device data and operating
on them simultaneously. Previous implementation was using a single
buffer (except for reading more data than allocated size) and subsequent
reads were corrupting memory of previously returned buffers.
This fixes e.g. problem with reading NTFS UUID and validating VFAT
signature.
Implementation is based on original libblkid code which handles it
similarly. Buffers are put on probe internal list and freed when
releasing a probe struct.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>