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!
I figured out what the actual layout of this property is (instead of
guessing, which created some bad results.) And added tests of course!
Also fixed a bug in read_string_with_length() that didn't handle the
case where the string length is zero.