hammer2 - Fix deadlocks, bad assertion, improve flushing.
* Fix a deadlock in checkdirempty(). We must release the lock on oparent
before following a hardlink. If after re-locking chain->parent != oparent,
return EAGAIN to the caller.
* When doing a full filesystem flush, pre-flush the vnodes with a normal
transaction to try to soak-up all the compression time and avoid stalling
user process writes for too long once we get inside the formal flush.
* Fix a flush bug. Flushing a deleted chain is allowed if it is an inode.