Initial draft for a Git backend

The current idea:
- we keep the same SHA1 as the one computed by Git, we just project the loose objects into something simpler
- both the leaf nodes of irmin trees and blobs objects have the same sha1. this should not break the API (as we explicetely look in the blob or tree store when we do a Tree.find or Tree.sub) but we need to modify the FS backend to store objects of different kinds in different dirs.

This way, we avoid to recompute the SHA1 of all the objects and to create new tree leaves when we pull.

As we start to have non-deterministic keys (which depends partly on the backend, ie. on the way the objects are serialized), we need to be a carreful when implemeting the push operations. But that should be fine: we will only loose sharing opportunities but the assumption is that a writer will write on only one kind of backend so all the keys will stay locally consistent.