hammer2 - Implement I/O abstraction, fix deadlocks
* Implement a device buffer I/O abstraction, struct hammer2_io. This
abstraction allows multiple chains using smaller allocations to be
locked concurrently sharing the same (larger) underlying buffer cache
buffer.
* Does a very good job abstracting device block size selection from
logical block size selection.
* The new implementation also abstracts asynchronous callbacks quite well.
* Not currently all that SMP friendly.
* Fixes buf/bio deadlocks under heavy loads.