hammer2 - Implelment variable-sized physical storage allocations
* The physical block which straddles the file EOF now only allocates
the nearest power of two >= 1024 bytes sufficient to hold the file.
Note that files <= 512 bytes still fit in the inode embedded data area.
This results in much, much better packing of small files.
* Remove most restrictions on logical/physical size mismatches.
This also opens the door in the future for variable-sized indirect blocks.
* The strategy read code is now a lot smarter on optimizing to a direct-read.
(direct writes are still not supported yet). The code should also be
more readable now.
* Rewrite the file truncation/extension code to use the new
hammer2_chain_resize() function.
* Correct several bugs in the buffer offset calculations when pulling 16K
logical buffers out of 64K physical buffers.