Remove the individual primitives and replace them with a single one that gets passed its type (actually not 100% on this one)
Move some things to the system instead of the classes (data type enum, read/write function defs, initializing values, validation)
Merge BasicSerializationData and AbstractSerialisationData to PrimitiveSerializationData
rename CustomSerializationData to SerializationDataCollection; also no longer inherits from abstract. Very slight code duplication, but I think it's worth it.
Ignore the commit names. Main changes: