The overall goal is to use implicit-sharing in many places in Blender that currently do unnecessary copies. See #95845 for more details. This commit only adds the base data structures in blenlib and uses those in `GeometrySet` and `AnonymousAttributeID`, which used a more ad-hoc version of implicit sharing already. #105994 lists some more places where support for implicit sharing can be added (most notably: custom data layers). Pull Request: https://projects.blender.org/blender/blender/pulls/105994