Beginnings of an awk script to generate build.ninja

Why awk?  Because I haven't done enough things in my life that I
will probably regret, and I need to learn to take more risks.
Minor fixups to mkdeps.awk

-On failures, report line number in this file (not overall)
-Allow comments (on their own line, introduced by '#')
Recognize when a module has no sources of a particular type
Keep track of which platforms a module exists for

This will be more useful when platform 'all' is handled sensibly.
(It is not confidently asserted that it is useful at all without
that.)
mkdeps now outputs well-formed dependencies

But it doesn't understand subdirectories yet.
And the toolchains it generates rules for are hard-coded in the awk
script.
And the description file format needs some cleanup.
Allow toolchains to be specified in deps.in
Remove human-readable database dump code
Document global arrays

Also removed unused ones
modules[] takes over for modtypes[]

modules was a (zero-content) list of known modules, and modtypes
had the same index set with additional information.
So use modtypes where we need the list of modules, remove the
now-unused modules array, and rename modtypes to modules.
Be smarter about matching

Now we never need to say 'next' to avoid incorrectly matching rules.
Use sources appropriate for the toolchain platform

i.e. if the platform for the source is either "all" or the platform
for the toolchain we're writing rules for, use it.
Correctly handle modules that don't build for all platforms
Fix whitespace
Build 'wexpand' instead of 'expand' for Win32

Windows has an 'expand' that does something very different.
Link rules now can use inputs by type

The build rule we output now includes variables "in_<type>" (where
current values for type are obj and lib), for if build rules need
to treat different types of inputs differently.
(No build rules currently need this, but there are known toolchains
in the wild that will once we get around to supporting them.)
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