Integrate ninja build with Visual Studio

This change allows plugging in external builders to the
msvs projects.  This is activated by defining the
following flags in target_defaults:

* msvs_external_builder
* msvs_external_builder_out_dir
* msvs_external_builder_build_cmd
* msvs_external_builder_clean_cmd

When msvs_external_builder is defined for a gyp target, the
following changes are made to the generated msvs project:

* The project will use the provided msvs_external_builder_build_cmd
  to build the project, and also use the provided
  msvs_external_builder_clean_cmd to clean the project.

* No dependencies between projects will be created. This is because we
  want to use ninja's dependency build instead.

* The build output directory will be msvs_external_builder_out_dir
  instead of 'src/build/$(Configuration)'.

* MSBuild rules and actions will not be generated. This is because we
  want the external builder to perform these actions
  instead.

This change has no effect if the 'msvs_external_builder' variable is
not used (or if it is an empty string).

Some caveats of these mode are:

* The 'Build/Clean Solution' commands in Visual Studio cannot be used,
  because this will invoke a separate external builder instance
  for each project in the solution.

* Hitting F5 in Visual Studio always prompts to build, claiming that
  the build target is out of date, even if it was just built.

Test: Define the following variables in target_defaults:

  'msvs_external_builder': 'ninja',
  'msvs_external_builder_out_dir': '<(DEPTH)/out/$(Configuration)',
  'msvs_external_builder_build_cmd': [
    'ninja.exe',
    '-C',
    '$(OutDir)',
    '$(ProjectName)',
  ],
  'msvs_external_builder_clean_cmd': [
    'ninja.exe',
    '-C',
    '$(OutDir)',
    '-t',
    'clean',
    '$(ProjectName)',
  ],

Alternatively, export "GYP_GENERATORS=msvs-ninja".  This
will automatically setup msvs to build with ninja.

Then run "gclient runhooks" to generate your projects. Open
the generated solution. Right-click on any project and click
the 'Build' menu item. The output window will show the ninja
build in progress.

Patch by sbaig1@bloomberg.net

R=dpranke@chromium.org, scottmg@chromium.org
BUG=

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

git-svn-id: http://gyp.googlecode.com/svn/trunk@1618 78cadc50-ecff-11dd-a971-7dbc132099af
Add forgotten tests from r1618.

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