A proof of concept direct io implementation.

This is a proof of concept patch to make it possible to tag certain rules as direct io. This causes Ninja to print the output immediately rather than buffering it. For deep rationale see issue 545. Not buffering io is useful when running a slow running command that is not run in parallel with any other build rule. The two canonical examples are running a unit test suite and regenerating build files.

This patch is just a proof of concept, it should not be merged as is. It only patches the posix side, stores the output inside itself even though it is not used, and so on. It works by adding a new variable for rules called directio. If set to 1, Ninja will print the output on screen immediately. It is the responsibility of the Ninja file generator to ensure that only one directio rule is invoked at a time (or suffer the consequences of interleaved output).