Mostly renames. Starting to blend it towards a 2-phase execution model (init and run). Missions may only be defined during init; messages may only be passed during run. This will allow me to have modifiable data structures during init that are then frozen and read-only for the entire process of running the program. Much better threading outcomes.
We now inform the mail room about the full set of messages that will be used for each mission. Mail room then only supports those messages. This will be required when I split mail handling into two phases: init & run.
Brutal and rough chop of FoolSupplyHouse into two phases. They have too much dependency and their lifetimes are wrong, but most of the functionality is now in the right class. And many (not all) callers are using it the right way. Now I need to update some of the built-in missions. And that will probably require me to get mission locations defined correctly (splitting them out from the ActiveCity class & having more than one location in a city).
Some renames just for fun.
Nullability cleanup.
Start building city and mission definitions, test first. This give me basic construction sites.
Some more fluent asserts that needed nullness specs.