hammer2 - update documentation, begin working on callback I/O
* Update documentation with my current thinking.
* Implement hammer2_iocb - a structure to govern async block I/O requests
with a callback function.
* Implement iocb API.
* Replace old hammer2_chain_load_async() and related code with the new
callback mechanism.
* Implemented a somewhat more sophisticated freemap DOMAYFREE setting,
but note that we still do not iterate file data blocks when removing
a file to adjust their freemap (and I may decide not to just in general,
since the meta-data scan and freemap update can add considerable latency
to a remove() operation).
This means that the whole concept of partial block free states may wind
up being thrown out the window, but as of now it's still the plan.