Test handling of empty RULE_INPUT_DIRNAME and fix this on android.

1) Add test coverage for RULE_INPUT_DIRNAME being empty to the
rules-dirname test by adding a new input file in the same directory as
the gyp file.

2) Enable the test on the android backend; to make this easy, drop use
of iostream in the test code since the STL is not in Android's default
include path and just use stdio instead.

3) Fix the android generator to normalise paths correctly so that this
case works.

Unfortunately, MSVC does not handle an empty RULE_INPUT_DIRNAME and there's
no obvious way to fix it, so this will have to remain unsupported there.

BUG=
R=thakis@chromium.org

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

git-svn-id: http://gyp.googlecode.com/svn/trunk@1907 78cadc50-ecff-11dd-a971-7dbc132099af
1-5% faster gyp: Use a simpler deepcopy.

The system deepcopy supports recursive objects or non-tree structures.
Those structures don't exist in gyp so save 2-3 seconds
CPU time (0.3-1s clock time with 8 cores) by using a simpler
implementation.

Patch from bratell@opera.com.

BUG=362075
R=scottmg@chromium.org

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

git-svn-id: http://gyp.googlecode.com/svn/trunk@1908 78cadc50-ecff-11dd-a971-7dbc132099af
gyp: Optimize IsStrCanonicalNumber for common case

IsStrCanonicalNumber is called on everything in a gyp file
and for a build system the size of chromium that meant spending
about 2 CPU seconds in it. By hand optimizing the execution of
the common case (which is not a number) that can be cut do less
than 1 CPU second.

The save of 1 CPU second (3%) translates to roughly 0.2s execution
time (0.6%) with 8 cores. YMMV

Patch from bratell@opera.com.

BUG=362075
R=scottmg@chromium.org

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

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