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
don't write out deps entries if nothing changed

Shortcuts a common case.
record and check depslog file version

Future-proofing against some change we may need to make later.