Merge single- and multi-player codepaths

This PR contains a fully functional implementation of sp campaigns using the mp create, configure, and connect engines. There should be no noticeable change to gameplay. Code for launching singleplayer games (handling the engines) is contained in singleplayer.*pp, similarly to multiplayer.
Once this is merged, we can begin to introduce some mp-specific options (eras, observers, etc) to sp. My plan is to make these available through an "Advanced Settings" dialog accessible from the current sp campaign selection dialog.
I would consider to add these to 'sp' namespace and renaming them to 'enter_some_mode' for the sake of consistency with multiplayer.*pp.