hammer2 - Flush ordering fixes
* The flush code is required to write out modified chains, not just bdwrite()
them. Otherwise the disk synchronization and volume header write will be
mis-ordered.
* Don't re-write indirect blocks that the OS had already written out. This
check is already being made for data blocks, and inode modifications are
embedded and thus must always be written out.
* This fixes issues where 'hammer2 show <device>' would find corrupt
topology during concurrent filesystem write activity. The disk media
is always supposed to be consistent.
We don't care about block-reuse cases for this debug command but we do
care that, sans block-reuse, a dump will produce a consistent topology.