As we update references to point to newly allocated dirty blocks in a
transaction we need to free the old referenced blknos. By using a
two-phase dirty/free interface we can avoid freeing failing after we've
made it through stages of the cow processing which can't be easily
undone.
Signed-off-by: Zach Brown <zab@versity.com>