[Fontations] Generate SkPath-compatible arrays on the Rust side

Avoid chattiness, reallocation and overhead for checking for
path change listeners by generating the paths on the Rust side.

Port logic from FreeType backend to sanitize paths (avoid
no-op lineTo's etc) same as the FreeType backend.

Port remaining logic, for example when to add a close-Verb from
SkPath implementation.

Leads to a ~1.2x speedup for path extraction.

Generates equivalent paths compared to previous impl.

Benchmark data in: https://issues.skia.org/370024633

Bug: skia:370024633
Cq-Include-Trybots: luci.skia.skia.primary:Build-Debian10-Clang-x86_64-Debug-Fontations,Build-Mac-Clang-x86_64-Debug-Fontations,Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-NativeFonts_Fontations,Test-Mac12-Clang-MacBookPro16.2-CPU-AppleIntel-x86_64-Debug-All-NativeFonts_Fontations
Change-Id: I83ef623816e1194bf7f6624065103bf31947c87c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/905117
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Dominik Röttsches <drott@google.com>
Commit-Queue: Dominik Röttsches <drott@google.com>
4 files changed