reworked endianness after getting a mips debian to run in qemu and doing some testing. persistence should now be endian-agnostic
floating point values are also properly endian-agnostic now (were ignored before, oversight of mine)
added checks for truncation when unpersisting types of mismatching length (e.g. unpersisting a size_t on a 16-bit machine)
added check for floating point type and representation compatibility