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/.
@whyrusleeping is there a difference how they're meant to be used? a benefit to keeping the entire dag in memory as its built?