settings: add magic id and number of fields to the beginning of each struct
settings: support unicode strings
settings: refactor DeserializeRec() to support parallel decoding easier in the future
hopefully fix bug pointed by /analyze