Subninja chdir: parse and load declarations

This builds on the previous CL to implement the parsing of
a subninja chdir, then loading the .ninja file in the
chdir. Note the order of the steps:

1. The subninja chdir is fully parsed in the parent
2. The subninja file is loaded into memory
3. The chdir() is performed
4. LoadManifestTree() is called
5. The current dir is restored like it was

This CL does not implement all the changes to be able to set
parent edges pointing at the subninja.

Change-Id: I7d75f72b252b8f60a6d2d7cec763a879e2c705be
9 files changed