Mission objectives

This PR adds support for mission objectives.  The GUI parts will come in a later PR since they conflict with pchote's new RA UI.  For the curious, the GUI based on the old UI is [here](https://github.com/OpenRA/OpenRA/compare/OpenRA:bleed...obrakmann:mission-objectives-gui).

A few words on how this works: the backend only holds the information about the objectives. The decision whether an objective is failed or completed lies in the hands of the scripts. The backend however *does* determine whether *the game* is lost or won.

There are primary and secondary objectives. The game is won when all primary objectives have been completed. Secondary objectives do nothing.
This can be `readonly List<MissionObjective> objectives` to indicate that nothing will swap out the list from under `Objectives`.