Allow partial merge tombstone deletions

This introduces a new tombstone with a pointer to the file and offset of
the value being deleted. Currently only the file part is used. When
putting a value that replaces another value in a previous file, we now
write a tombstone for the previous value, then the new value.  When
merging and finding a tombstone, if the original file is part of the
merge, the tombstone can be dropped safely.  If not, then we re-open the
original file and append the tombstone to it, so that a future merge
hitting that file will drop it.

Update stats properly when writing tombstones

Drop tombstones on prefix merge and explicit merge

When merging a consecutive set of files starting from the first file in
the bitcask directory, it is safe to drop all encountered tombstones.
Detect this kind of "prefix" merge.
Allow merge input files to be specified by creating a merge.txt file in
the cask directory. bitcask:needs_merge() picks the contents of this
file to merge and will delete merge.txt when all files in it have been
deleted or marked for deletion.

Explicit merge in batches

The user can now insert empty lines in a merge.txt file and needs_merge
will return the files to merge from the file in batches delimited by
those empty lines.

Also, bumped version to 1.7.0

When merging old tombstones without file info, transform them into a
tombstone that contains the id of the containing file such that a merge
can drop it when eventually all files < id are merged.
Thought leadership brough to you by @jonmeredith

Add size cap in needs_merge

The caller can now cap the list of files that need merging so the size
of the files in the non-expired list does not exceed it.
This can be used to avoid massive, extremely long merges.

Test that legacy tombstones can be dropped