The big idea: make it easier for hooks to customize *what* template(s) are rendered by moving more of the process into hooks—including template rendering itself.
Required:
* Add some sort of ordering for hooks
Thinking an enum of named stages: data adders, data mungers, filters, actions.
The return value of ``hooks.load_all()`` must respect this ordering.
* Make the main loop seed the entry data with information about the importer used.
* Move template rendering into a hook, where the template to load is determined by a value in the entry data.
Extra customizations after that's done:
* Add a hook that simply reads information from a configuration file section ``[template variables]`` and adds it to the entry data.
* Add a hook that changes what template to use based on other entry data. (This needs more specification.)
* Write a utility dict transformer. Given a source dictionary, it returns something like ``{new_key: transform(source[old_key]) for old_key, transform, new_key in configuration}``.
A lot of the CSV importers are doing this ad hoc now, so refactoring out a common way to do it could help speed up development of future importers.