Fix observer widgets not showing up when a player loses

Fixes #6172.
Fix breakage of --upgrade-map in OpenRA.Utility

Closes #6045
Support production of actors without IFacing.
Introduce IUpgradable and purchasable unit upgrades.
Reimplement UnitUpgradeCrate using IUpgradable.
Reimplement unit levels using IUpgradable.
Add FriendlyFire property to GivesExperience.
Replace CloakCrateAction with upgrades.
Merge pull request #6110 from pchote/unit-upgrades

Add an actor upgrade system (+ overhauls veterancy and crates)
Add support for mission objectives

Objectives can be either primary or secondary objectives. Primary ones
influence the outcome of the game.  If all primary objectives are
completed the game is won, and lost when any of them fails.

Objectives can be added at any stage during the game, allowing to react
dynamically to game events.

The objectives backend only contains the information about the
objectives themselves. It does not check if objectives are completed or
failed.  Instead, the state of objectives must be manually marked. The
backend, however, does check whether the game is won or lost.
Make Conquest- and StrategicVictoryConditions use objectives backend

Note: 3rd party KotH maps will need to be modified to work correctly
with this change.  Previously, StrategicVictoryConditions was a
supplement to ConquestVictoryConditions.  After this change, each works
by itself.  So KotH maps will need to remove the ConquestVictoryConditions
trait from the player definitions, or both victory conditions will have
to be satisfied to win the game.
Move trigger lists into a dictionary for easier access and enumeration
Add mission objectives to Lua interface
Make CheckboxWidget honour GetText()
Copy checkbox markings from TD to the other mods
Add a mission objectives GUI panel
Add end game dialog
Make necessary changes to existing maps
Remove inconsistencies w.r.t the Surrender order

* Surrendering is now possible even in maps that do not use
  ConquestVictoryConditions.
* The Surrender button is greyed out instead of hidden when it cannot be
  used.
Add some Media functions to new Lua API