hammer2 - Reduce flush complexity, fix panics

* Set synchronous flush mode by default for now to reduce sources of
  potential crashes so the core can be stabilized.

  This means that the only transactions that will run with a higher
  transaction id during a flush are allocations from the freemap made
  by the flush itself.  This is far easier to debug.

  Concurrent frontend transactions are disabled during a flush, for now.

* The buffer flush which is run synchronously from the main flush now always
  uses an async + sync vfsync sequence and does not allow any buffers to
  be left over before entering the main flush.

* The buffer flush now also uses the same transaction id as the main flush.
  A new flag, HAMMER2_TRANS_PREFLUSH is used to manage this mechanic and
  to assert on any illegal buffer flushes.

* Fix miscellanious assertions that were incorrect, and split the pass4
  codepath in the flush into pass4 and pass5 to fix another bug.

* Fix an improper semicolon (from swildner)

* Remove more dead code.

* The hammer2_vop_reclaim() code was the only code path that would acquire
  a hammer2_inode lock prior to starting a transaction for a modifying
  operation (for the delete unlinked file on last reference).  Fix this
  code to open the transaction first and obtain the inode lock second,
  which fixes a deadlock.

* Fix an infinite while() loop due to improper arguments in a TAILQ_NEXT()
  call.