hammer2 - Refactor bulkfree
* Change the bulkfree scan from breadth-first to depth-first. This
improves disk performance significantly (~2x) and is also needed for the
duplicate-detection feature.
* Create an 8-way set-associative hash table similar to what the live
dedup code uses. Record the data_off for elements we have processed
and detect if a duplicate is encountered so we do not have to re-process
the duplicate subtree.
Also prioritize the table based on the aggregate bottom-up inode count
to reduce the chance that a top-level duplicate (aka snapshot) will get
kicked out of the hash table.
* Clean up the hammer2_chain_scan() API, making it more bref-centric
which allows us to avoid instantiating chain structures for leaf
entities. This significantly improves performance and increases
flexibility.
* Manual page adjustments for kern.maxvnodes settings suggestions.