Added accessor functions in particle state which allow extending the
particle state. These can be used later in python wrappers to support
more immediate collection-style access.
Replaced the attribute state array with a ListBase. Eventually this
should use a hash table for O(1) lookup, but for now a linked list is
the easiest implementation.
Ensure the attribute states are synced to the attributes of the particle
system when adding/removing attribute descriptors. This is not a hard
requirement really, if an attribute has no state data that would still
work, but in most cases it should stay in sync.
Copy the attribute descriptor to attribute states as well. The storage
overhead is negligible and this allows sanity type check assert as well
as correct RNA refining without access to the original attribute
descriptor.
Clear the attribute buffers when adding new particles to a state. This
should probably use a specific default value for each attribute at some
point.
RNA fix: using RNA_def_struct_sdna_from works only with actual pointers,
but not with directly nested structs (NParticleAttributeDescription in
this case). Resort to including "desc." prefix in the property paths.