Add tags to .gitignore
Add support for name templating

This lets us do The Right Thing for non-constant filename extensions.
In principle it also cleans up some of the filename handling, but in
practice it's closer to "enables some cleanup that needs to happen".
Make Wine build work
Use suffixes for output name if no template exists

This is still not quite the full flexibility we want - toolchain-specific
name construction can still be suffix-only.
Suffixes and templates are configurable
Output diagnostics to stderr

We write to /dev/stderr, and rely on having either a /dev entry that goes
to the right place or an awk that recognizes and handles that.
Fully parameterize module build line generation
Diagnose unknown module types
To-do list
Explicitly make build.ninja depend on deps.ninja

Ninja is smart enough to re-read the build config if the top-level
build file is out of date, but doesn't internally track everything
that gets included.
Write a phony rule for each toolchain

So we can easily build all programs with a specific toolchain
Output a phony "all" rule

It depends on every toolchain's phony "build everything with this
toolchain" rule.
Now build.ninja can specify a default toolchain if desired, without
making it hard to build everything when that's what we want.
Update TODO.mkdeps
hydra TODO