Prework for --experimentalEnvvar

This CL adds the --experimentalEnvvar flag in Options and passes it to
ManifestParserOptions, which passes it to ChunkParser where subninja chdir
parsing happens. This sets the stage for a future CL to parse environment
variable assignments.

Also add to struct Include a std::unordered_map to contain those environment
variable assignments, and add support to struct Edge for commands that
have a cmdEnviron. This sets the stage for a future CL to compute an
environment that differs from the startup environment variables when
ninja was started.

This is all the practical refactoring to make the meat of the
--experimentalEnvvar code simple, while not making any change to ninja
behavior; the flag --experimentalEnvvar does nothing.

Change-Id: I7654fbcb3389fc4a6384ac395ae0f8740b9e39ec
22 files changed