add noreturn attr on Fatal()
refactor some of the output mtime-handling code

Reduces duplicated explain output.
add DepsLog, a new data structure for dependency information

DepsLog is a compact serialization of dependency information.
It can be used to replace depfiles for faster loading.
pass command results via a struct

WaitForCommand now passes all command output via a struct.
This will allow adding more output in a future change.
factor out implicit dep loading
use DepsLog in loading dependencies

WIP
factor out creation of build directory
load deps log at startup
no error if deps log doesn't exist
plumb DepsLog load through Builder
expand DepsLog test, fix two bugs it revealed
track deps log load time in metrics
add "special=gcc" attribute, use to load depslog
windows: add uint16 casts in depslog
factor MSVC parsing out of CLWrapper into CLParser
refactor build-time deps-extraction
windows: use CLParser to extract deps during build
use special=anything to trigger loading from depslog
always run ExtractDeps, even on command failure

On Windows we still want to strip out the /showIncludes output
even when the command fails.
windows: drop use of msvc helper in build