Fix some bugs and 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.  Hopefully might take care of #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.)

-[Unknown]