Implement dag::Build::allInputs().
Fix output ordering in Build::str().

Inputs => outputs, not the other way around!
Track "side-effect" outputs explicitly.

When a tool like lex generates both a C file and a header file, we should treat the two results differently: the first is fed as import to a compiler but the second is just a dependency for other things.
Implement GraphViz .dot graph output.