Runtime modifiers

Finally ready! Some highlights:
- Text objects own TextModifierGroups
- A TextModifierGroup defines a set of operations (Modifiers) to perform on ranges of the whole Text object.
- The ranges are defined by TextModifierRanges which are owned by TextModiferGroups. Each TextModifierGroup can have multiple TextModifierRanges, meaning that the set of Modifiers will perform on the final selection defined by TextModifierRanges.
- TextModifierRanges select portions of the text in a Text object based on rules that define the strength of the selection. The strength of multiple TextModifierRanges can be blended together meaning selection strength can be above 1 and below 0 (optionally clamped).
- There are three fundamental modifications:
  1. Transform where glyphs are individually transformed by a matrix
  2. Paint where glyphs are drawn with different paint (currently only opacity is supported, but later Fill and Stroke will be too).
  3. Shape where a selection can have shaping properties (currently variable axes later also font size) changed. This is the most complex one as it requires [two pass shaping](https://github.com/rive-app/rive/blob/ef2d0d3ca32b6c61595d94587fb22f6456478896/packages/runtime/src/text/text.cpp#L578-L598).

Diffs=
8086bdbf9 Runtime modifiers (#5512)
diff --git a/.rive_head b/.rive_head
index e871fb8..65814d5 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-1a271c4378f1fe79235e0e930d8261cbc09ea1be
+8086bdbf9e9b0535255653a1915a3cf22e1d1dd3
diff --git a/submodules/rive-cpp b/submodules/rive-cpp
index 06fa79b..07a7a2b 160000
--- a/submodules/rive-cpp
+++ b/submodules/rive-cpp
@@ -1 +1 @@
-Subproject commit 06fa79be95cd9265fd269b9621f84d3bfcaf161f
+Subproject commit 07a7a2bda762fc8cf60242c3e6ec4860d8de2fba