new std.array.replaceLast

While testing of replaceFirst with utf8 string I found a bug and fixed that.
This lead me to add replaceLast because I needed such a function in the past and didn't want to retro four times.
@quickfur: Not decoding "uglifies" or outright breaks other code. While I'm not too fond of the current situation either (imho, making strings plain arrays in the first place was a mistake), I'm a bit annoyed that people tend to single out certain pieces of code that might look complicated, while ignoring the big picture. And please note that `replaceLast` would be incorrect without a special case for narrow strings anyway!