HAMMER VFS - REDO implementation base code part 3/many
* Track the oldest potentially uncommitted UNDO/REDO FIFO offset
on an inode-by-inode basis and use a red-black tree to find
the aggregate oldest offset.
* If REDOs are present generate a REDO SYNC entry in the UNDO/REDO FIFO
within the recovery span which indicates to the recovery code how
far out of the span it must go to process REDOs.
* Fix a bug in hammer_generate_redo() where the REDO would not be
generated if the data length was 0 (SYNC records use a data length
of 0 as a degenerate case).
* Print the REDO SYNC entries on the console if bit 2 is set in
vfs.hammer.debug_io (0x04).
* NOTE: The recovery code does not yet process REDOs.