Experimental support for subtree contents

Still some TODO to fill but the I start to like the API:
- There is now a Tree sub-module for each Irmin.S implementation (which is derived automatically, so no need to change the backends)
- The tree stores data in memory only
- Use Irmin.update t <path> <tree> to commit a tree

This way, it should be much easier to map subtrees to OCaml values without too much overhead (ie. most of the job is done in memory, without the need to compute SHA1 of sub-objects on every change).

The remaining TODOs are the translation from in-memory trees to store objects. This will need some modifications on how we compute the keys from values -- need a little bit more thoughts.