Consolidate Hash Functions

Feel free to criticise the splitting out of cvstypes.h
Could equally well define hash_t in hash.h and then
include hash.h from cvs.h

hash.c seems a bit odd, there's surely a simpler way to
redirect a public implementation to a static function.

However, everything inlines away.
Build fix for loz's last patch. All regression tests pass.
Remove DOS droppings (^M in EOL).
Properly conditionalize for word size.
Add per-line statistics to improve speed of generating snapshots
Update credits following a signifucant speedup by Tom Enterline.
Document more speed.
Change the bug warning a bit.
Typo fixes.
Make iterators the interface to revdir usage.

It is intended that revdir be an opaque type, however we lose too much
performance if we can't take advantage of struct packing in cvs.h

However, you should only build one through revdir_pack_files and only
access one using the revdir_iter functions.

I can imagine an additional interface to create a revdir in a streaming
manner would also be useful in the future.
Document more speed.
Change the bug warning a bit.
Typo fixes.
Damn, I hate merge bubbles.
Add Tree Based Packing Scheme

Instead of storing revisions as a list of lists of files, store as
a hierarchy. Intern each subdirectory.

Substantial space savings on large repositories. NetBSD can now be
converted in 32bits. Gentoo-x86 can be converted in under 8GB. With
the old packing scheme this went OOM at 44GB.