Add option to require commands to create all outputs

If an output file wasn't created, then running the same build again
without changes would mark the edge as dirty and re-run the command.
This is an easy way to make incremental builds much longer than they
should be.

Commands that don't actually write outputs should be using `phony_output`

The default `-w missingoutfile=warn` will just print a warning when an
output isn't created. `-w missingoutfile=err` will fail the command when
an output isn't created.

Test: ninja_tests  (run by
Change-Id: I1f4b1ee06f406b01b9263dcda7c6412eef4431ad
4 files changed