Cache object names / db length

Hi Roger,

I've done a bit more work on RDS2 format. The main point is that I am caching the names (and length) of the objects in the database. This means that length(x) and names(x) are now instantaneous operations although there is small but measurable penalty when removing/adding objects to the filehash.

I also decided to assume a specific directory layout for objects on disk (like .git/objects/). In future it might be possible to accept a function that mapped object names to on disk location (and vice versa). This should enable the database to cope with 10^6 objects on a network file system.

I also added slots for compression and XDR ordering.

Finally, I added a regression test based on that for RDS.

There is still no proper documentation etc. but would appreciate thoughts on whether you think this is heading in the right direction for release.

Best wishes,

Greg Jefferis.