AdvSimd support for System.Text.Unicode.Utf8Utility.GetPointerToFirstInvalidByte (#38653)
* AdvSimd support for System.Text.Unicode.Utf8Utility.GetPointerToFirstInvalidByte
* Move comment to the top, add shims.
* Little endian checks
* Use custom MoveMask method for AdvSimd
* Address suggestions to improve the AdvSimdMoveMask method
* Define initialMask outside MoveMask method
* UInt64 in Arm64MoveMask
* Add unit test case to verify intrinsics improvement
* Avoid casting to smaller integer type
* Typo and comment
* Use ShiftRightArithmetic instead of CompareEqual + And.
Remove test case causing other unit tests to fail.
* Use AddPairwise version of GetNotAsciiBytes
* Add missing shims causing Linux build to fail
* Simplify GetNonAsciiBytes to only one AddPairwise call, shorter bitmask
* Respect data type returned by masking method
* Address suggestions - assert trailingzerocount and bring back uint mask
* Trailing zeroes in AdvSimd need to be divided by 4, and total number should not be larger than 16
* Avoid declaring static field which causes PNSE in Utf8String.Experimental (S.P.Corelib code is used for being NetStandard)
* Prefer using nuint for BitConverter.TrailingZeroCount