The index is now a central part of the system, as it should. We store
articles just like git stores its objects, in a two-tier directory.
For example, article whose message id hashes to deadbeef is stored at
index/de/ad/deadbeef. Articles in groups are now hardlinked to the
index, the main repository of articles.
Group's article names are now cached in groups/<g>/.meta/. The meta
information is incrementally augmented every time it's necessary.
Commands LIST and GROUP are now served at constant time.
Other little fixes were done a long the way.
We're ready to tackle the new design on the index, so we're going live
with the current changes so that we can use it every day and spot any
mishaps we might find (while we write the new index subsystem).