Modify save_config and related functions to allow an optional alternate file path to write the config file to rather than the default; this greatly simplifies matters for generating the default config file.  The only problem I have now is that the config file is *always* regenerated after running build_ext, even if no source files changed.  Another rare corner case where this won't work properly is if some config items have changed in pure Python modules and build_py is run directly this won't update the default config file--it only gets updated if build_ext is run.  I have a possible workaround for that in mind, but I think it can wait until and unless it's an issue.