Use `in` instead of `Object.keys`.

Use `for` key `in` object instead of `Object.keys` in the `plan`
function of the `Balancer`. Tidier.
Document intent of balancer planning.

Not implemented yet, but added Docco to describe how the balancer
planning is supposed to work. Currently, the planner will combine more
than two pages into a merge if they will fit. I want to do them two at a
time, checking to see if further balance is possible in a subsequent
balancer.
Extract ghost leaf manipulation to `exorcise`.

Extracted the portion of `deleteGhost` that shifts the ghost and writes
the new position array to the leaf page file into its own function. This
function will be called from `mergeLeaves` when a ghost is present in
the left leaf page of the merge.
Rename `unlink` to `terminate`.

Renamed the `unlink` function which only breaks the right link to
`terminate`. Created a new `unlink` that breaks both the left and right
links of the given node.

Note that this is the linked list of candidate leaf pages, not the leaf
pages themselves. There is another `link` and `_unlink` pair for the
pages used to maintain the most-recently used list for the cache.
Merge away ghosts, merge two at time.

Merge leaf pages two at a time. Undo the previous logic which tried to
fit as many leaf pages as possible into a merge. This is in accordance
with the direction I took for branch balancing; the branch balancing
logic expects to balance the removal of only a single node at time.
Closes #60.

Instead of first deleting a ghost in the left leaf page of a leaf page
merge in a separate balance operation, ghost deletions in the left leaf
page of a leaf page merge now take place in the leaf page merge
operation. This closes #56.

Fixed a bug in `mergePages` where the penultimate branch page was being
written as the pending semaphore, instead of the carefully selected
`ancestor` page.
Merge branch `merge-ghosts` into `master`.