ninja: Store target-level flags in a variable

This greatly reduces the size of Ninja files projects with lots of flags
and lots of source files in libraries. ParaView goes from 110M to about
58M.
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.
ninja: Factor out target-level definitions

Worth another 3M in the WebKit build.ninja file.
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.
Ninja: Fix and refactor variable name escaping
LocalGenerator: Add a string overload for AppendFlags
ninja: Factor out language flags into a variable
ninja: '+' is also not allowed