'ipfs get' to checkout commits and MerkelDag objects as files

We get the `ipfs get` command that allows to retrieve the MerkelDAG objects as files and directories.

Another thing is that I added commits. Now for every run of `ipfs add` that results in nonzero object addition, there is also a root commit node:
```
dag.Node{Data: "Commit Message", []*dag.Link:[(link to the root tree node),]}
```

I had to add it to make `ipfs get` work: there was this issue with the `git add` that the filenames weren't reflected in the resultant Node. These names are stored in `dag.Link`, not `dag.Node`. It makes perfect sense and is this way in `git` as well, because this way you can just link to the same node even when the file is renamed or moved, but if you want to save filenames you need to have the root node.