This is unfortunately one giant commit, but this now (partially) parses
Persistent.sav. There is still some structs and data left to parse, and
we're suspiciously missing 3KiB of data at the end. But... progress!
Finally finished and figured out how maps are handled. It didn't encode
the number of items, it's based on how many bytes you read. I also fixed
arrays so they're also correct, and we'll see if sets break.