make new hash work on windows
build gtest with -fvisibility=hidden as well

Fixes a warning on Mac.
decide on murmur hash, delete stl hash

A nice thing about working on Google: a C++ expert who happened
to be writing a proposal on hashing for the next C++ version
wandered into my office.  He seemed to think using Murmur here
is fine.
Merge branch 'stringpiece-hash'

This branch changed the fundamental key used in hashes in Ninja from
char* to StringPiece.  Using StringPiece allows us to eliminate some
copies and null termination in various places.

While I was at it, I switched the hash function to the Murmur hash.

Seems to be ~100ms faster:

evmar:/work/chrome/src$ ~/projects/ninja/misc/measure.py ~/projects/ninja/ninja-trunk -C out/Debug chrome
sampling: 994ms 1010ms 1000ms 999ms 1019ms 994ms 1002ms 993ms 997ms 1040ms
estimate: 993ms (mean err 11.6ms)
evmar:/work/chrome/src$ ~/projects/ninja/misc/measure.py ~/projects/ninja/ninja -C out/Debug chrome
sampling: 888ms 895ms 891ms 886ms 896ms 888ms 891ms 903ms 895ms 888ms
estimate: 886ms (mean err 5.7ms)
windows: make ninja_test build
BuildLog: Use Log::insert(Log::value_type()) to avoid invalid strings.

The MSVC std::string implementation copies strings, so using make_pair
resulted in a pointer to invalid memory. This ensures the insert uses a
StringPiece without an intermediate std::string copy, so the correct pointer
ends up in the hash_map.
Merge pull request #196 from evanj/master

Fix MSVC invalid string problem
enable libstd++ debugging in debug mode
windows: always generate PDB
Stop warning about chdir etc which are treated as errors on MSVC with the
current settings
Add a test that dry run shows all commands that could be run (none
cleaned) and a fix for this
Merge pull request #197 from doctorlove/simple_dry_run

Simple dry run
Strip ansi escape sequences from subcommand output when not writing to a smart terminal.
Merge pull request #198 from nico/strip0

Strip ansi escape sequences from subcommand output when not writing to a...
Mark CreateProcess "program not found" failure as non-fatal
windows: use _WIN32 define everywhere

Rather than mixing use of WIN32 and _WIN32.
only msvc needs these workarounds
Merge pull request #201 from syntheticpp/mingw-msvc

Some workarounds are only for msvc.
no error code about too long file names on Windows
fix search&replace error on struct name