hammer2 - Reformulate strategy code and direct I/O
* Use variable block sizes for both logical and physical buffers such
that the logical buffer matches the physical buffer.
* Change the file data layout to use 64K blocks for all bulk data fully
enclosed in the block, with a single variable-length block straddling
the file EOF sized 1K - 64K in powers of 2. The inode's 512 bytes of
embedded data is still implemented for file sizes <= 512 bytes.
* Implement direct IO for both reading and writing.
* Reformulate the strategy write code such that bio2.bio_offset is always
pre-calculated, allowing the strategy code to issue the I/O without
requiring any further filesystem interactions.
* Fixes numerous deadlocks.