Introduce the "console" pool

This is a pre-defined pool with a depth of 1. It has the special property
that any task in the pool has direct access to the console. This can be
useful for interactive tasks or long-running tasks which produce status
updates on the console (such as test suites).
Allocate per-edge BindingEnvs lazily.

In chrome, only 2000 of 22000 build edges have bindings.  A BindingEnv is
64 bytes, so allocating these only when needed saves a bit over 1 MB of
memory.  Since env chains are shorter for lookups, builds also become a
tiny bit faster.
Propagate file rename to gitignore.

This was introduced by 68a4bb27d1a747b240ea68cd320a51dbd261ed14.
Merge pull request #741 from nicolasdespres/propagate-file-rename-to-gitignore

Propagate file rename to gitignore.
Add a simple manifest parsing perftest.
Manifest perftest: Also measure command evaluation time.
Add manifest_parser_perftest to .gitignore.
Manifest perftest: Pull manifest parsing into own function.
Manifest perftest: Try to make it build on Linux.
Merge pull request #742 from nico/maniperf

Add a manifest parsing perftest.
Merge pull request #715 from nico/lazyenv

Allocate per-edge BindingEnvs lazily.
Merge pull request #714 from pcc/console-pool

Introduce the "console" pool
Allow SIGTERM for interruption.

Default signal sent by many other programs (mainly kill(1)) to gently
terminates another one is SIGTERM.
Forward interruption signal to child processes.
Suspend sub-processes when control-z is hit.

When control-z is hit the shell sends SIGTSTP to the front process group.
Generally it suspends all the process tree started by the command. But ninja
moves its sub-process to their own group so that it can stop them all on
interruption. This is a great improvement compared to make(1). However in such
a case sub-processes are not automatically suspended by the shell when you
hit control-z. Only ninja is and the command it has started keep running.
This patch addresses this issue by catching SIGTSTP and forwarding it to its
sub-processes groups. Thus, the entire ninja's process tree is suspended as
expected.

Thanks to Peter Collingbourne <peter@pcc.me.uk> for his help.