Rewrite pivot key for branch page merges.
Rewrite pivot key for branch page merges.

The ancestor is really the parent. If the ancestor is in the pivot, then
there is no need to update the pivot key. The ancestor is the head of a
linked list of branch pages that references a single leaf page. When the
single leaf page is removed, the linked list is removed, and if the key
is in the ancestor branch, then it is removed.

An adjustment to the logic discussed in the last commit message.
Otherwise, this implementation is essentially that, if the ancestor is
not in the pivot page, then the key to the right of the ancestor is used
to replace the pivot key.

Recall that the pivot key is the right key in the merge. I've taken to
calling it the pivot key, because I descend to that key, then follow
it's left key down one and to the right to find the left page of the
merge, and follow the pivot key, the right key, down one and to the left
to find the left key of the merge.

Another adjustment; rather using the ancestor index to determine if the
pivot key needs replacing, we now test to see if the ancestor page is
the same page as the pivot page. If not, then the ancestor page must be
below the pivot page and a new key needs to be hoisted. We then assert
that the index of the child removed from the ancestor page is zero.

See #187.

bigeasy/strata,cesarmarinhorj/strata,cesarmarinhorj/strata,bigeasy/strata