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)
 - Doesnt support taking over AI (this would need a rewrite on how the AI gets orders)