* CBT: Touch file targets after running the task (#56229)
After task is done building, it touches file targets (because our script in the task may not always update our targets, e.g. compilation resulted in the same output), guaranteeing that the file was updated.
On a next rebuild, it sees that the file was touched and won't rebuild it.
Failures raise exceptions, so in that case they won't be touched.
Refactored things a bit, made some room for specifying "non-file" sources/targets later.
* cbt: Touch file targets after running the task
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>