Implement recursive indirect block creation for DAGs

Also cleaned up a bunch of code related to building and reading DAGs
let's have two funcs?

```
FindLinks(n *Node, k u.Key)
FindLinksAfter(n *Node, k u.Key, offset int)
```

FindLinks just calls the other.