Remove outputs before executing rule

Unless it's a restat rule, we expect the rule to recreate the outputs
anyways, and this can help catch commands that don't.

It seems to be more reliable than the oldoutputs warning (which I'm
hitting occasionally in some unexpected places), and partially fulfills
the same goals. It's not a full replacement, since outputs with
timestamps less than their inputs will cause rebuilds.

Move the usesphonyoutputs={yes,no} and the new preremoveoutputs={yes,no}
into a new `-o` command line option set, rather than having them in the
`-w` warnings list. I considered moving them to a manifest variable, but
there's not a lot of precedence for that, and soong_ui needs to
coordinate with ckati and potentially control them based on board-level
BUILD_BROKEN_* values.

Test: run ninja_tests (via build_prebuilts.sh)
Test: run full android build with this option enabled
Change-Id: I5b2cb26117f6f852f6568b28dda27175d79b851b
5 files changed