New structure rev_master retains common info for a master's delta sequence.

All regression tests pass.
Space optimization.

Because we freed up some trailing space in rev_ref, information about
whether a delta has been omitteed can mode there.  This means less
space has to be allocated in phase 3.

All regression tests pass.
Do an allocation slightly more cleanly. All regression tests pass.
Fixing segmentation error sizeof(path)

FreeBSD bug:
"cvs-fast-export fatal: blobfile open of /tmp/cvs-fast-export-SGgbrs: Is a directory (21)"

sizeof(path) is always the size of the pointer (4 or 8) so
so substracing strlen() from this the integer actually wraps around
so the limiting of snprintf have no effective limit in Linux.

In FreeBSD this is seen as negative and thereby zero characters added
What was I thinking?  The I/O in export_blob() doesn't have to be thread-safe.

Collect the speedup.  All regression tesyts pass.
Code cleanliness fix. All regression tests pass.
Factor out Keith's rather weak hash function.

All regression tesrts pass.
Analyze keithp's node-hash function for the historical record.

All regression tests pass.
Some plausible hash-function alternatives.
Try to make the hash function a little clearer.  All regression tests pass.
Prevent lossage even if we're using a hash fyunction that tends to overflow.

All regression tests pass.
Use a better hash function. Collect the gains by reducing the working set...

...because it means we can shrink the node_hash table.  Profiling shows
no performance hit.  All regression tests pass.
Makes no sense to have an LRU file cache in the edit buffer...

...now that there's a separate dituffer context for each master.
This change cuts working-set size.

All regression tesrs pass.
Because node hash tables now cover only one master each, hash table size...

...can be dramatically reduced without performance penalty. This was
tested by profiling on the groff repo.  It would probably be OK to
reduce it even further.  This change reduces working-set size.

All regression tests pass.
Remove a duplicative member.
Isolate the parts of the cvs_file context required for blob generation.

All regressio tests pass.
More context bundling.  All results of the analysis pass come back in forest_t.

All regression tests pass.
Separate snapshot generation from file parsing.

This is a big step.  Snapshot generation now happens *after* stage 2,
just before export.  Ebentually the goal is to merge those phases
and generate blobs only as needed.

All regression tests pass.
Cleanup after the generation move.
Properly free memory in generator objects.

All regression tests pass.