hammer2 - Add assertions, fix a flush race against delete-duplicate
* hammer2_chain_delete_duplicate() does not require a lock on the parent
chain, nor do we want to require one. This can result in a race against
indirect block creation which is trying to D-D chains from an upper chain
to a lower one.
* Fix the problem by moving the DELETED check in
hammer2_chain_create_indirect() from before the chain lock to after.
* Minor cleanup of the same routine.
* Add assertions to try to catch any situation where the block table is
flushed twice, which would cause a later assertion. Try to catch it
earlier.