Flag capture alert fix

/obj/item/flag/nation was just storing a type path, rather than a datum object. This is why the checks before the player messages would never succeed.
Changing the flag variant definitions to create a new datum was a start, but not a complete solution. Since the nation datum in the flag will be a different instance to the datum in the players mind, we can't just compare mind.nation to flag.liege or flag.nation. This is why I've changed them to compare the nation.name variable.
I also added a few extra sanity checks to avoid runtimes I quickly ran into while testing this fix.

Might want to check the "N.vassals -= nation" functionality is still working as intended. I put it behind null checks since it was runtiming while testing it, so it should still work, but I didn't actually test it.