Make the type structs non-trivial, use new and delete for allocation and freeing, and use std::string for most strings they contain. Also use StringRef instead of char pointers in a few places. Mainly this improves ergonomics when working with the strings. Pull Request: https://projects.blender.org/blender/blender/pulls/132750