Multiple directory support in source generators

Routes and templates source generators previously could only generate
sources for one directory at a time.  The problem is, if there were
multiple source directories, there would only be one generated
directory, and they always scanned the generated directory in order to
delete generated files that no longer had source equivalents.  This
meant there was a race condition, because source generators run in
parallel, if a generated file was found but the header hadn't been
written, it would be deleted.

This fixes it to ensure that each source generator only needs to run
once, so projects with multple source directories (eg, the documentation
project) don't have this race condition.

Also made routes generated source handling more robust.
Merge pull request #1547 from jroper/source-generator-multidir

Multiple directory support in source generators