add mb support for split function, better replace support

This adds multibyte character support for the spilt function.
For example:
"éÄ,éÄ,Ä,Ä,Ä,Ä,Ä,Äほ"|split(',', 3)
Into:
Array
  0 =>éÄ
  1 =>éÄ
  2 =>Ä,Ä,Ä,Ä,Ä,Äほ

And {% set foo = "éÄéÄÄ"|split('', 3) %}
Into:
Array
  0 =>éÄé
  1 =>ÄÄ
  
Fix for the replace filter.
When using the current replace filter like this:
{{ "I like %this% and %that%."|replace('%this%', 'foo') }}
The result is:
"I like fooisf and fooaof."

With this fix the result is:
"I like foo and %that%."

And added tests for this.