Convert this into a more fully-fledged merged tool.

This currently works in two passes:
* collect pass which collects information about all the commits.
  this stores the fast-exports in temporary files
* weave pass which reads from the temporary files and weaves the commits
  together in the order determined by the collect pass

It requires a patch to `git_fast_filter` to allow resetting of IDs
Allow overriding the id_offset - for example, when re-reading the same commit file (use with caution!)