ninja: Collapse rule inputs into a single node when it makes sense.

Before this CL, if a rule matched N source files and had M inputs, the inputs
where repeated for every build edge, hence showing up N * M times in the
generated ninja file.

After this, gyp instead writes a single stamp node depending on all the inputs
and makes every source rule edge depend on this stamp file, reducing the number
of times they show up in the generated ninja file to N + M. (Also bake
order-only deps into this new node.)

No behavior change. Reduces the size of individual_generated_bindings.ninja
from 4.5MB to 401kB, and the size of all generated ninja files in chromium
from 15.1MB to 10.9MB. This in turn speeds up empty builds by 60ms on my
SSD laptop and by probably over 0.1s on my HDD desktop (didn't try that due
to lack of travel desktop though).

BUG=chromium:350317
R=scottmg@chromium.org

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

git-svn-id: http://gyp.googlecode.com/svn/trunk@1879 78cadc50-ecff-11dd-a971-7dbc132099af
ninja: Reduce size of individual_generated_bindings by another 45kB / 15%.

1. Only write unique_name for rules on Windows, it's unused elsewhere.
Makes individual_generated_bindings.ninja another 30kB / 10% smaller.

2. Don't include the hash in the rule name: It's not needed since the stamp
file has a qualified path. Saves another 14kB.

BUG=350317
R=scottmg@chromium.org

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

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