Add Bytestream::operator << (char).

Sometimes we want to output a single character, not to have it interpreted as an integer!
A syntax error is not an “unknown error”!

When flex/yacc report a syntax error, they don’t use the Parser::ReportError mechanism.
TODO: choose llvm-lit once we have ‘which’ plugin.
Make structure types name->type mappings.

Rather than ordered sequences of types, structures are about mappings from names to types. We can’t yet parse these new kinds of structures, but we will soon...
Add missing semicolon.

I guess it was unambiguous enough before, but I’d really prefer to be explicit!
Add ability to parse new-style structure types.
Update type checking for new-style StructureType.
Ensure files are unique.
Record all build inputs.
Don’t record all Filename instances.

We might have filenames that don’t actually describe files, e.g., when we concatenate filenames into the name of a file that is actually built. These should not appear in graphviz, “make clean”, etc.
Don’t use absolute filenames for output files.

When compiling from `${buildroot}`, we can refer to `${buildroot}/foo.o` as just `foo.o`. This makes target names and build output nicer, but it also fixes Issue #22: Ninja knows to treat the build that generates `build.ninja` a little bit specially, but not `${buildroot}/build.ninja`.
Drop old `bootstrap/make/GNUMakefile` (big ‘M’).