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.