Implemented Saving and Loading

This is the combined results of my discussion with pchote, #6280 and #6238.

This supports loading in multiplayer and singleplayer, you can take over another human player when you load.
You can watch replays in this branch as normal, both loaded and original.

Only the host needs to have the replays for them to load,
not sure how Dedicated servers would work with this.

 ^ Needs testing on multiple computers.

Problems that might or might not be addressed:
 - UI is needed, 3f6c17e is a prototype (pchote doesnt like this so looking for a better way)
              http://imgur.com/a/QgqmE#0
 - Doesnt support taking over AI (this would need a rewrite on how the AI gets orders)
 - Start button is broken when loading, to load everyone has to hit ready.
 - If the save was made after a player disconnected it will freeze when trying to load.
 - When you save a game where the admin is a spectator and load, if the admin is a spectator (in the loading lobby) it kicks the admin and freezes the game.
 - If you join a lobby where a save game was loaded it doesnt force your faction/team/spawnpoint on join, have to switch slots to load the settings

This PR also makes observers independant of the game, this means they no longer lag the game for other players, but they can still chat even if they somehow fall behind (because of lag).

You can have as many observers as you want when loading/playing a game, they dont affect the game (unless one of the spectators is the admin, he is the only one who works like the old observers since he needs to give orders to bots).
`Game.IsSimulating = order.TargetString == "Enable";`