lib: implement `BASIC_STRING.split`
lib: implement `BASIC_STRING.split`

The semantics of that kind of function are always a bit tricky, I was
inspired by Gabriel Scherer's commit on OCaml Batteries:
<https://github.com/ocaml-batteries-team/batteries-included/commit/5380e7cf82ca2d20026d584f54da43fe068fcefa>

The implementation is a single functor that is applied in every backend.

ihodes/sosa