Revert "Code simplification.  All regression tests pass."

Caused a core dump on the NetBSD repository.
Add progress reporting to tagging
Reduce number of rev_masters

Only allocate one per file instead of one per branch
Simplify some tests

This is in one of the hottest inner loops in the application.
Each pointer dereference we can avoid is noticable in large repos
Optimize back linking commits.

Change git_commit->dirs from being embedded in the struct to being
a pointer.

This means we know the size of a commit before doing building the
revdirs, which in turn means we can allocate the back links at the
same time we are building the file array.

We lose some as we now have an extra dereference to get the array
members. However, on netbsd-src it saved about 3.5 minutes out of
31 minutes.

The two inner loops around revisions was 26% of the total CPU time
before this change.

This also opens the opportunity to slab allocate git commits.
Probably backwards would be advantageous.

The additional pointers aren't freed. The place to do so would be
just before we tear the process down.
The -k option contibues to be a pain in the ass.
Typo fix and minor update.
Document -k a bit better. Regression tests pass.

Note: what looks like a logic change in generate.c is not. EXPANDKO
is equivalent to EXPANDKB.
Change vcscovert's default behavior to -kb.

Regression tests pass.