Fix clipping issue caused by wrong fillRule

Reported here: https://2dimensions.slack.com/archives/CSFM8K3CH/p1680123791322639

We were trying to be "smart", mostly for the benefit of the Tess renderer by sharing a Shape's Path when it was also used for clipping. With the Tess renderer it meant that a Path could be triangulated once and used for both clipping and rendering the actual path.

This breaks down when the Clip has a different fill rule from the referenced Shape, and is further complicated by the fact that the fill rules lives on the Shape's fills.

This PR simplifies things by just always giving clips their own render paths and not attempting to share them with drawable Shapes.

Diffs=
d9952ae77 Fix clipping issue caused by wrong fillRule (#5067)
diff --git a/.rive_head b/.rive_head
index 3b930e3..afbd3bf 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-2bc4acfbae514b00af797f08e28e35bad6fb76c3
+d9952ae77c4024134bbd067f53cc04c698c02dda
diff --git a/src/shapes/clipping_shape.cpp b/src/shapes/clipping_shape.cpp
index 5451b92..f904194 100644
--- a/src/shapes/clipping_shape.cpp
+++ b/src/shapes/clipping_shape.cpp
@@ -55,12 +55,7 @@
             }
         }
     }
-
-    // We only need a render path if we have more than 1 clip path as we join them.
-    if (m_Shapes.size() > 1)
-    {
-        m_RenderPath = artboard->factory()->makeEmptyRenderPath();
-    }
+    m_RenderPath = artboard->factory()->makeEmptyRenderPath();
 
     return StatusCode::Ok;
 }
@@ -96,31 +91,16 @@
 {
     if (hasDirt(value, ComponentDirt::Path | ComponentDirt::WorldTransform))
     {
-        if (m_RenderPath)
-        {
-            m_RenderPath->rewind();
+        m_RenderPath->rewind();
 
-            m_RenderPath->fillRule((FillRule)fillRule());
-            m_ClipRenderPath = nullptr;
-            for (auto shape : m_Shapes)
-            {
-                if (!shape->isHidden())
-                {
-                    m_RenderPath->addPath(shape->pathComposer()->worldPath(), identity);
-                    m_ClipRenderPath = m_RenderPath.get();
-                }
-            }
-        }
-        else
+        m_RenderPath->fillRule((FillRule)fillRule());
+        m_ClipRenderPath = nullptr;
+        for (auto shape : m_Shapes)
         {
-            auto first = m_Shapes.front();
-            if (first->isHidden())
+            if (!shape->isHidden())
             {
-                m_ClipRenderPath = nullptr;
-            }
-            else
-            {
-                m_ClipRenderPath = first->pathComposer()->worldPath()->renderPath();
+                m_RenderPath->addPath(shape->pathComposer()->worldPath(), identity);
+                m_ClipRenderPath = m_RenderPath.get();
             }
         }
     }