When editing an existing blog post, and clicking on "Preview" instead of
just saving directly, the blog post would have its date/time updated to
"now" instead of keeping its original time (and regardless of the
checkbox to reset time not being checked).
The fix was to catch the post ID from the submission so it can load the
existing data first; previously it was only getting the post ID from the
query string, which isn't used when previewing the post.
All modules are now plugins. The config.py calls load_plugin for each
plugin it needs (some plugins may load others automatically). Also each
plugin keeps its own template folder which gets added to the template
search path, so i.e. if the photo plugin is unloaded completely, the URL
endpoints won't work either (with the old system, since the HTML
templates still existed in the default root the endpoints would still
serve pages, just without any Python logic behind them).