ninja/win: Support VCLinkerTool.GenerateManifest

Currently Ninja generator always expects VCLinkerTool.GenerateManifest is true. With this CL, it will be configurable like MSVS generator.

BUG=gyp:389
TEST=python gyptest.py test/win/gyptest-link-generate-manifest.py
R=scottmg@chromium.org

Review URL: https://codereview.chromium.org/97873002

git-svn-id: http://gyp.googlecode.com/svn/trunk@1802 78cadc50-ecff-11dd-a971-7dbc132099af
Support Visual C++ PGO in Ninja generator

This CL teaches msvs_emulation.py about following settings so that ninja ganarate can handle Progile-Guided Optiomization (PGO) settings for Visual C++.
- VCLinkerTool.LinkTimeCodeGeneration
-- 2: /LTCG:PGINSTRUMENT
-- 3: /LTCG:PGOPTIMIZE
-- 4: /LTCG:PGUPDATE
- VCLinkerTool.ProfileGuidedDatabase

Note that LinkTimeCodeGenerationOption.LinkTimeCodeGenerationOptionUse is partially supported for LTCG (Link-Time Code Generator). This CL also adds unittests for LTCG in addition to unittests for PGO.

BUG=gyp:385
TEST=gyptest.py test/win/gyptest-link-ltcg.py test/win/gyptest-link-pgo.py
R=scottmg@chromium.org

Review URL: https://codereview.chromium.org/82703007

git-svn-id: http://gyp.googlecode.com/svn/trunk@1803 78cadc50-ecff-11dd-a971-7dbc132099af
Clean up the filters in the MSVS generator.

Generating projects in subfolders could produce filters with
several nested '..' folders with a single child. For example,

../
-../
--src/
---projects/
----project1/
----project2/

The patch prunes filters with a single child, making the above

project1/
project2/

Patch by jmadill@chromium.org.

BUG=
R=scottmg@chromium.org

Review URL: https://codereview.chromium.org/95193003

git-svn-id: http://gyp.googlecode.com/svn/trunk@1804 78cadc50-ecff-11dd-a971-7dbc132099af