Add equivalent to `Shuffle` function from `math/rand` and `math/rand/v2`
packages, but based on randomness from `crypto/rand` package. This
allows cryptographically secure shuffling of data.
Also add `ShuffleSlice` function that shuffles a slice of any type.
BREAKING CHANGE: Minimum required Go version is now 1.18 due the `ShuffleSlice` using generics.