SI-8988 Escaping character in StringLike.split(c) is slow

Escaping a char when calling split is slow.  We end up compiling a
Pattern on each call to simply match a character literal.

Instead, we just use a loop with indexOf to construct our resulting
Array.

It's longer code, but according to my tests, this is about 11 times faster than what we had.
Isn't it simpler to `def isMeta(c: Char) = ".$|()[{^?*+\\".indexOf(c) == -1` and `toString split (if (isMeta(separator)) escape(separator.toString) else separator.String)`?