Move some DepsLog::Deps initialization code into its constructor.

No functionality change.
Move updating DepsLog's deps_ array into its own function.

No functionality change.
Let DepsLog::RecordDeps() update its in-memory representation.

This is a behavior change, but it should be safe: Graph only queries the
deps log at startup, before running any command. Nothing else currently
queries the deps log.
Keep a DepsLog's data valid after a call to DepsLog::Recompact().

Previously, a DepsLog would become invalid after Recompact() was called,
due to Recompact() making all node ids refer to a temporary DepsLog
object constructed in Recompact().
Recompact the deps log when it gets too big.

Now that Recompact() keeps all data structures intact, it can just be
called at the beginning of a build and the build will still work.
Merge pull request #563 from nico/recompact-deps

Implement deps log recompaction.