Commands Refactor Part 2

We split #196 in two parts. this is the second. (#262 is the first). This builds on all the changes to commands/.
yeah... the naming could definetly be better. NewDagFromReader keeps the entire DAG in memory as its being built, and BuildDagFromReader dumps things to disk as soon as it can.