cmMakefile: Use a hashmap for imported targets
cmGlobalGenerator: Store targets in hash maps
ninja: Use string parameters
ninja: Don't use a stringstream to build an argument list

Streams are expensive to construct (looks like some locale-related
stuff), so use strings instead.
LocalGenerator: Add a string overload for AppendFlags
ninja: Factor out target-level order-only dependencies

This reduces ninja file output even more for projects with lots of
libraries with entangled transitive dependencies. ParaView goes from the
previous 58M to about 45M.
ninja: Factor out custom command order-only depends

This makes WebKitGTK's CMake build.ninja file go from 165M to 11M and
configure/generate in 5 seconds.
Merge topic 'dev/refactor-source-depends-in-ninja' into next

bc1aefd9 ninja: Factor out custom command order-only depends
c8a0cca5 ninja: Factor out target-level order-only dependencies
6f175371 LocalGenerator: Add a string overload for AppendFlags
01b79c63 ninja: Don't use a stringstream to build an argument list
3c640891 ninja: Use string parameters
Merge topic 'dev/hashmap-for-targets' into next

5de52931 cmGlobalGenerator: Store targets in hash maps
d16ae636 cmMakefile: Use a hashmap for imported targets