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, or lost when any objective has been failed.

That means that you can have optional objectives with a secondary objective that doesn't ever fail in your mission script.

For testing, use one of the KotH maps. The primary objective is to hold the strategic points, the secondary objective is to survive/eliminate the enemy.
You should be able to access this via `.Count`, which will be more efficient (directly accessing a field, instead of enumerating and counting).