some love for std.string

many functions of std.string had no attributes like pure, safe etc.
additionally, many const arguments where not marked as const.
tabs -> whitespace
removed tail whitespace
Doc Examples to unittest docs
But you are correct, `pure` and `@nogc` shouldn't be there either, since they are inferred anyway (it's a template). Just put them on the unit test instead to verify that the implementation itself is does not prohibit `pure`- or `@nogc`-ness.