This makes custom mesh attributes available in Cycles. Typically, these attributes are generated by geometry nodes, but they can also be created with a Python script.
Possible todos:
* Potentially use different types for integer and bool attributes, currently they just become floats in cycles. This wastes memory in some cases, but I'm not sure how Cycles handles other geometry types internally, or if everything should just be floats.
* Investigate potential conflicts with sculpt vertex colors (which are a subset of custom attributes). Problem is I don't really know how to use sculpt vertex colors, also they are still an experimental feature, so maybe sculpt vertex colors should check how to interact with generic attributes instead of the other way around.