I can at least move the test unit around, undo movement orders, and the unit/detail info updates nicely as the underlying data changes. It's still a bit too fragile. I think that moving the event hooks up to the map/game level and out of the layer level will help in that regard. Maybe it'll be enough, maybe not.
Still, it's progress, and with this roadblock out of the way I'll hopefully be able/motivated to do more work. On the List:
Add end-turn capability. [done 5-22]
Add placeholder new-turn reporting. [sort of done, 5-22]
Add actual movement rules. [test rules, 5-23]
Adapt UI movement to use the rules. [done, 5-23]
Expand game object serialization. [Race done. 5-23]
Add FoW handling. [counting added, 5-27]
Add proper new game unit spawn. [sort of done, 5-30]
Implement Project gameobject. [common/server, 5-28]
Add project serialization/commands.
Add placeholder UI handling for project orders.
And then I'll almost, sortof have a semi-playable game without any content or combat. Certainly gives me more respect to just how much stuff is required for a 'simple' turn based 4x game.