Add basic in-memory tests
WIP

- remove *a lot* of unecessary copies
- clean-up the pack API
- create a pack index file from a pack file (received on clone/fetch)
- on clone / fetch, do not unpack the received pack file anymore - this makes the
  clone and fetch process *much* faster

TODO:
- serialization pack index file
Fallback to the previous behavior (unpacking the received archive file) using --unpack
Dead-code
Remove the caching in GitLocal.

This was unecessary complex and this could easily be added later by using a proper cache mechanism if needed.
Support for writing index files (untested)
code cleanups
Start testing the serialization of pack files

This is currently broken
WIP

Start the support of writing packed_value / pack files.
WIP

The reading/writing of complete pack file works.
- need to remove the debug statements
- would be nice to optimize the creation of SHA1 from bigstrings (later)

The writing of index files is broken.
Remove debug checks and logs
Refactor the API

- Create one ml/mli file per object with a standard signature
- more consistent names
Update CHANGES
More clean-ups
Add some PIC representations for pack files.

Still broken, but almost there ...
Clean-up the position independant representation of pack files
All the tests pass \o/
Style improvement, API cleanups, improved speed

- All the tests pass
- 'ogit git://github.com/ocaml/opam-repository' works both
  with and without --unpack, using a reasonable amount of
  time (half the time is used to download the pack file:
  would be nice to process it in a streaming way later).
- Still a minor problem in the index pack generation from
  a received pack file. Git complains about the index being
  too short. Looking at that now.

ogit clone git://github.
Add missing files
Fixed reading/write cache files

All tests pass -- as well as `ogit clone`.