Fix some savestate compatibility issues

I accidentally added a pointer to savestates, luckily it's almost always 0.

Also makes tm save differently, since some platforms (hi Linux) use extra members which makes savestates less compatible (and there it has a pointer as well, which is not safe anyhow.)

Also removed DoPOD() etc. which weren't used anymore and moved as much as possible to the cpp since rebuilding everything was annoying me.

-[Unknown]