Reading & restoring RNA "writable" state wasn't working reliably when Python was called from multiple threads. - Resolve by acquiring the GIL before calling `pyrna_write_*` functions. - Assert `pyrna_write_*` has the GIL to prevent this happening again. - Move duplicate checks from bpy_props.cc into utility functions.