Mark std.array.split and splitter as @safe, pure and nothrow

This pull request contains the following changes:

* mark `split` for string types as safe, pure and nothrow  
  It doesn't contain encode/decode operations for string types. So we can mark it as nothrow.
* mark `splitter` as safe and pure  
  It cannot be nothrow because it may contain encode/decode operations for string types.
* mark the unittests for them as safe, pure and nothrow  
  Some of them cannot be marked when it contains `core.stdc.stdio.printf` and `std.conv.to`.
* Use a documented unittest instead of the example in the comment