hammer2 - Add truncation lock, change dio persistence
* Add a truncation lock to interlock between write()'s and ftruncate()
calls. This prevents a junk buffer from surviving a ftruncate() if
it happens to get written concurrently with the ftruncate().
* Change dio persistence. Do not automatically persist dio's while refs
are held, this creates problems for ref'd chains held in the
hammer2_inode_t structure and prevents vfsync() from working properly.
Add a persist_refs field which we will use later in the XIO code to
persist a chain's DIO across an unlock/relock sequence, and possibly
in other places too.