Use one enum to denote Version across all code, also identifies if data
is invalid
Move some SAV code to virtual members in abstract class
(BAK/Exportable/Footer)
Few minor bugfixes here and there (hiding Characteristic label, loading
pk6 to sav3, sav3 version detection via gamecode)
Fixed save invalidation as well. GameVersions were detected based on
checksum validity.
Gonna change that so an invalid save can still be recognized (based off
of other markers)
SAV5 change didn't get saved
no need to "take" the rest of the data when footer checking.
this logic can be expanded if other emulators behave differently...
Even catches the 1MB misconfigured DSV's (stuffs the bak data in with
the footer).
Works by searching for the DeSmuME footer signature in the input data,
if present, breaking up the info.