Implement Compare_To() for RawPosting.
Change SortFieldWriter to use pointer-sized elems.

SortFieldWriter is the only subclass of SortExternal where the elements
have been anything other than pointers.  By changing it to use pointers,
we enable subsequent commits simplifying SortExternal by limiting it to
sorting pointers only.
Eliminate `width` member from SortExternal.

Remove `width` as a constructor argument and member variable from
SortExternal and its subclasses, replacing it with hard-coded
"sizeof(Obj*)" as needed.
Use object-based elements within SortFieldWriter.

Use objects rather than structs as an elements within SortFieldWriter,
harmonizing with all other subclasses of SortExternal.
Modify SortEx_Feed() argument type.

Have Feed() take an Obj* rather than void*.
Change return type for Peek() and Fetch().

Modify SortExternal and subclasses so that Peek() and Fetch return Obj*
rather than a void* which was actually Obj**.
Change type of SortEx members.

Change slice_starts and scratch to limit element types to Obj.
Change type for some SortEx private functions.

Modify some private subroutines in SortExternal to use Obj pointers
rather than byte addresses.
Change type for SortEx buffer.

Change buffer for SortExternal to an array of objects instead of
addresses.
Handle refcounting when clearing SortEx buffer.

Now that SortExternal only handles objects rather than addresses, it
makes sense to decref objects when emptying out the buffer.

This change is safe for all subclasses and incurs no performance penalty
under normal conditions -- unless something goes wrong all buffered
items will have already been consumed by the time the buffer-clearing
operation is invoked.
Move Shrink() up from PostingPool to SortExternal.

Move the Shrink method up into the parent class and generalize it by
calling Shrink() on runs.
Purge some obsolete code from SortExternal.
Rename some vars in SortExternal.

Use "buffer" instead of "cache", plus "buf_max" instead "cache_max",
etc.
Rename some methods in SortExternal.

Replace "cache" with "buffer" in a few method names.
Update SortExternal docs with new terminology.

Modify comments and docs to use "buffer" instead of "cache".
Update SortExternal docs.

Modify summary to reflect the fact that SortExternal now only sorts
objects rather than arbitrary data.
Change semantics of Release_All().

At present, Release_All() does not free previous allocations, but allows
reuse.  However, all the existing usages of Release_All() expect
the memory to be freed, resulting in a number of memory leaks.  To fix
these problems, change the behavior Release_All() to free memory instead
of reuse.
Remove unused method MemPool_Eat().
Preserve @INC ordering.

Inject `use lib` directives into generated executable so that @INC
ordering is preserved.
Don't sort documents twice in SortFieldWriter#Refill

The doc_ids are already sorted in S_lazy_init_sorted_ids. We only have
to make sure that S_lazy_init_sorted_ids uses the doc_id as secondary
sort key.