hammer2 - Stabilization pass, more flush refactoring
* Add voldata.inode_tid, separate inode TID allocations from
transaction TID allocations in voldata.
* Rewrite the transaction management functions.
* Rewrite hammer2's filesystem sync code to reduce stalls.
* Keep track of a generation number on the hammer2_chain_core structure
so the flush code can re-scan when it modifies elements within the
flush transaction.
* Cleanup the duplication and delete-duplication code and hardlink handling.
The delete-duplication code now properly tags delete_tid when a flush is
delete-duplicating a chain which is deleted in the live view but is still
valid in the flush view.
* Correct numerous bugs in tracking the modified/deleted state of
a chain.
* Correct numerous flush bugs.
* Separate the mirror TID for the freemap chain from the volume chain.
This will allow freemap updates to be delayed.
* Implement a more stringent algorithm to determine when CHAIN_MOVED
can be cleared in chain->flags.
* Do a better job limiting the flush scan when concurrent modifying
operations are occuring in large volumes.