Make compile work with -DORDERDEBUG
Add an optimization flag.
Speed up path sorting by remembering past sort orders

Uses uthash http://troydhanson.github.io/uthash/ BSD revised license

revdir.c sorts commits based on their paths
It does this over and over again, with similar sets of paths
This patch maintains a hash from paths to commits.
The hash can be traversed in path order.

Performance numbers from the emacs historic cvs repository:
redurces times path_deep_compare is caled from about 2.5e9 to 2.5e7
The merge common branches part of conversion reduced from 240s to 60s
overall conversion from 13m30s to 10m30s ~20% speedup
Information hiding and documentation.
Remove conditioned-out support for blob compression.

Now that large repositories are normally exported in -F mode, heroic
measures to space-optimize -C mode no longer make a lot of sense.
Remove the clutter before it bit-rots.

All regression tesrs pass.
Isolate the red/black tree code and restore the ability to build without it.

This isn't because I don't trust the redblack code.  It's an attempt
to make the rest of the code more readable by separating tactics
from strategy.

All regression tests pass with the redblack code conditioned eith in or out.
Cosmetic fixes.
Readability fixes.
This is an attempt it isolating the Bloom filter code.

export.c may still have issues when compiled without BLOOMSET.

All regression tests pass (with BLOOMSET).
Code now functions correctly with BLOOMSET conditioned either on of off.

All regression tests pass.