Simplify player modification checks

When playing in singleplayer I noticed that my player wasn't being saved.  I checked the code and found it's modification checking logic convoluted, so I redid it with a simple boolean instead of a bunch of backup objects.  My singleplayer game is saving players now.

Conflicts with #1511.
why do you use C-Style strings in c++ Code? Please don't tell something like "It's faster" in this special case a couple of additional assembler instructions are irrelevant.