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)
Check for block identifiers if the general block checksum is invalid
(manually tampered).
BW/B2W2 detection is fine as is; the checksum block /won't/ be manually
modified.
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.