Fix some bugs in auto savedata modes, use structs

This changes a lot of situations where addresses were computed manually to simply use structs and arrays.  This makes the code look a lot clearer imho.  It also uses PSPPointers now.

Behavioral changes:
 * Most importantly, does not fall back to saveNameList for automated modes, regardless of saveName value.  From my tests, it seems like this is ignored.  Fixes #2356.
 * In FILELIST, with FF4's specific struct data and sdk version, I got an error for a parameter that works fine with a simpler test.  For now, I disabled the check since it's not likely games will accidentally hit it.
 * FILELIST also now writes the `bind` value `Load()` does.  My best guess is it might be the directory permission (1021 = 01775, which smells like unix perms...)
 * Fixes a few unlikely cases of buffer overflows (if filenames were manually made > 20 characters long in savedata dirs.)
 * Respects the game/save name passed in the getsize request (rather than the usual one.)

-[Unknown]