Unify storage buffers for atomic mode and normal

Now that atomic mode is proving to be a good solution and normal mode has switched to storage buffers, we can unify the two and delete the hacky back door we were using before for atomic storage buffers.

Diffs=
af2f2d632 Unify storage buffers for atomic mode and normal (#6449)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
diff --git a/.rive_head b/.rive_head
index 8446bd5..3b784ab 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-dcbe806b0485977a4c968e93eefcc7e6e01a4460
+af2f2d632619ec298e58ec54c4a9b6a66f9d27dc
diff --git a/include/rive/math/math_types.hpp b/include/rive/math/math_types.hpp
index f9b28d7..f79c6fd 100644
--- a/include/rive/math/math_types.hpp
+++ b/include/rive/math/math_types.hpp
@@ -83,6 +83,9 @@
 #endif
 }
 
+// Attempt to generate a "rotate-left" (rotl) assembly instruction.
+constexpr static uint32_t rotl(uint32_t x, int shift) { return (x << shift) | (x >> (32 - shift)); }
+
 // Returns x rounded up to the next multiple of N.
 // If x is already a multiple of N, returns x.
 template <size_t N> RIVE_ALWAYS_INLINE constexpr size_t round_up_to_multiple_of(size_t x)