Make DAGs support and run on snapshots

Title says it all
Let's keep more general language here, `DAG` will not know about `snapshot` in its internal implementation.