My goal is for a save/reload cycle to be both idempotent (i.e. save/reload/save is the same as just saving) and transparent (i.e. save/reload is the same as doing nothing), which is currently not the case. This patch is just a small step towards that goal; I want to make several small patches which can be easily reviewed instead of disappearing for several weeks and coming up with a huge patch which cannot be reviewed as easily.
Eventually, when saving/reloading is both idempotent and transparent, one can use loadsave_t for thorough desync checking (by running the game through a SHA1 message digest instead of using checklist_t; I have a working proof-of-concept of this already), and remove the need for other clients to reload the save when a client joins, as mentioned previously. The latter is especially important for Extended because the save games are much larger, for example on the Bridgewater-Brunel server.