Add a 'make clean' target
Remove the ugly 'Obj.magic' hack.

After some though, it appers that each 'distributed' datastructe has in fact two parts: one is the local representation (which can be arbitrary ocaml datatype) which can be optimized as usual. And there is a distributed part, which is used only on synchronization points. I guess we could make the whole thing quite efficient if we thing carrefuly about this.