hammer2 - Fix critical bulkfree bug, refactor hammer2_io
* The bulkfree scan code was corrupting storage elements allocated beyond
the 512GB mark due to not resetting the bulk duplicate subtree detection
heuristic for each new storage range being evaluated.
Fixed by zeroing out the heuristic in the ranging loop.
* Refactor hammer2_io.c. This module was originally designed for completely
asynchronous operation (with callbacks), but the backend chain code was
subsequently redesigned to use kernel threads for each target device. I/O
operations in the kernel threads were issued synchronously.
Remove all the asynchronous support code, which is like 50% of the module.
Get rid of the IOCB mechanism entirely. Simplify the hammer2_io structure
and flags interactions and simplify the API.
* Add some temporary debugging to the unmount path.