Much improve the build system's performance
Have make cache the creation of targets that:
Put things in the database.
No point in connecting to the db all the time when
we don't need to.
Create directories.
There are separate targets for directory creation dependencies
so that adding to/deleting from directories themselves don't
change the dependent timestamp.
Create complex targets.
Some targets build things that are too complex to easily
test, in a later make run, that the target has been successfully
completed.
In all the above cases the build system used to go ahead and do the
extra work. But now, gen_comments.py takes a long time to run
and it's really annoying to wait all the time.