Added startsWith() and endsWith() for yii\helpers\StringHelper

See #5316

I've tested different implementations, big strings and `mb_substr` + `mb_strlen` with `8bit` check is pretty efficient.
Case-insensitive check of course is much slower, where additional `mb_strtolower()` is triggered to ignore the case for multibyte strings.

Yeah, that's how I started and with `mb_strlen` way it works much much slower, because calculates number of real strings, instead of simple bytes.

Could it happen when lowercased and uppercased string like: `Й`, `й` can have different number of bytes?
I think uppercased and lowercased characters are placed in "groups", like 2 bytes for `ü` or `Ü`, but not 100% sure here.