Replace Ref by Tag in IrminGraph to be consistent with the rest of the API
Initial support for recursive stores

Irmin.Ref(S) generates a new store when values are blocks (ie. values
of the low-level block store). This is not very useful for the end-user,
but that's a necessary first step before being able to store context
in the node (ie. what @dsheets wants) and to be able to support more
esoteric datastructe (ie. what @BFarinier needs).