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.