The goal is to convert the legacy hair system to the new curves object at run-time for drawing. This allows us to get rid of all drawing code that was specific to hair particle systems. Then we can focus on improving the rendering of the curves object without too much code duplication.
Previously, render engines had to iterate over all particle systems in an object to find the hair systems that had to be rendered. Now, in the particle system modifier, the final hair strands are converted into a `Curves` data-block that is then passed to render engines as a separate object.
Notes:
* For Eevee this depends on D14916 for attribute rendering.
* The `cycles_hair_cpu` test still fails, because the `hair basemesh intercept` and `hair length info` tests fail. However, Brecht mentioned that this is actually fixing a bug.
Todos:
* Might be necessary to support reading from float2 attribute in the Texture Coordinate node in eevee as well (at least for curves).
* Eevee/workbench need working intercept, length and uv attributes.
* Eevee curve shapes seem a bit different than before. Needs to be investigated.