Implement recursive indirect block creation for DAGs

Also cleaned up a bunch of code related to building and reading DAGs
Ooooh yeah. For some reason i had it in my head that each link only cost 32 bytes