hammer2 - add crc checking skeleton

* Check meta-data crcs.  If verbose (-v) is specified, also check
  data crcs.
hammer2 - freemap and data check code

* Change the freemap to use 8 sets = ~32 reserved blocks instead of 14 sets.
  Use a straight iterator.  (TODO - must invalidate newer volumes if an older
  volume backup is mounted RW because freemap will become inconsistent).

* Update the freemap documentation.  Requires more work.

* MODIFY_OPTDATA can only skip to the end if chain->data is NULL in
  the BREF_TYPE_DATA case.  chain->data might not be NULL if the
  data chain represents a compressed device buffer.

* Add check code generation and testing.  Currently just kprintf()s a
  warning if the check code does not match.  Implement iscsi crc-32,
  sha-192 (this is sha-256 with the last 64 bits XOR'd into the first),
  and implement check generation and testing for all data, meta-data,
  and the freemap.  For Everything.  64-bit CRCs are not yet implemented.

* Fix a few cases where the DIO or the chain was not being properly
  dirtied prior to making modifications to the media contents via
  chain->data (this showed up because CRC tests were failing).

* Cleanup:

  - CHAIN_FORCECOW is no longer used, remove it.
  - Move FLUSH_DEPTH_LIMIT from hammer2.h to hammer2_flush.c.
  - Remove debug structures from the blockref check union.
  - Remove some #if 0'd code that is no longer applicable.