Previously, it appears that I meant for the caller to insert to
invoke duplicate_for_write prior to calling insert(). I think
I chose that convention to avoid chained callbacks within a method
not on *this. However, there are two scenarios where this is
necessary: leaf and split/merge. The split/merge criteria are a
little involved and were only buggily considered.
This patch moves responsibilty for duplicate_for_write on *this
into insert/update. Callers should assume that the callee will
handle it, and should not assume that they can call back into the
same node.