Rename 'FILE' to avoid conflict with FILE*.
isatty() is defined in unistd.h.
Save PATH when re-bootstrapping Ninja file.
Let visitors cancel recursive descent.

Every Enter() method in a Visitor should now return true if it wants recursive descent to continue or false if it does not.
Add Bytestream::Literal.

Only use Bytestream::Literal for, you know, filenames.
Disable exceptions and RTTI.

We don't use them and they can cost performance even if they're unused.
Add fabrique::dag::DAG.

Our IR will be a directed acyclic graph of files and rules that build them (plus variables that can be used by either).

Start adding DAG support: just variables for now.
Better diagnostics on failure to open input file.
Add fabrique::backend::Backend.

This is an interface for things that process DAGs (e.g. to turn them into Ninja files).
Parse, pretty-print DAG.