Rewrite `AssetShelfSettings::operator=` and fix `~AssetShelfSettings()`
to address some memory management issues:
- `memcpy` was used to copy a C++ struct, which shouldn't be done: it
can cause undefined behaviour if the class has vtables or internal
padding. This isn't the case here, but GCC nonetheless warns for it.
- `active_catalog_path` was incorrectly freed via `MEM_delete()`; it was
allocated with `BLI_strdup()`, which uses `MEM_malloc_arrayN()` and
thus should be freed with `MEM_freeN()`.
- Self-assignments weren't handled properly, and could cause data loss.
These are now all fixed.
Pull Request: https://projects.blender.org/blender/blender/pulls/143701