Continue revision of hack.asc based on Tom Enerline's notes.
Fix Tag Bug

We have a fast heueristic that finds the most likely git commit G
to point a tag T at. The tagging logic is now

1. Use the heuristic to find G
2. Check whether the revisions in G are identical to T
3. If so, we're done
4. if not, check all git commits for equivalent revisions (pruning if
   possible)
5. If we find one we're done

What happens next depends on SUBSETTAG

If enabled, we create a branch at G with a single commit containing
the correct set of revisions.

If not we just use G as the tag point as per the previous code.

This is _much_ slower than just using the heuristic method.

There seem to be issues with old cvs using 1.1 and 1.1.1.1
interchangeably
Workaround for revision equivalence

When checking whether a set of revisions are the same, treat 1.1
and 1.1.1.1 as equal.

This helps groff find a lot more tags.

I suspect this is down to a bug in old CVS

With this change, the tagbug test runs correctly. All regression tests pass.
Move some functions around

path_deep_compare and compare_cvs_commit are no longer called
from revdir since FILESORT became mandatory.

Move the functions to places they are called from
Afttempt to summarize info on all currently-known bugs.
Tweaks for readability.  All regression tests pass.
Always use STREAMDIR.
Partially undo a layer of macrology that is no longer necessary.

All regression tests pass.
Integrate and document the tag subset code.
Quiet cvsconvert a bit, and add a regression-test series that uses it.
Add end-to-end testing of conversions using cvsconvert.

All regression tests pass.
Comment polishing.  All regression tests pass.
Terminology cleanup.
More hacking documentation.
GNU make is not always system make.
improve error message & comment
yacc/bison, clang portability cleanup/fixes
make cvsconvert a bit friendlier
fix rot in debug code
Backport -R optoon from cgull's fix.