If the replacement rune was multi-byte, `os.replace_path_separators` would silently fail to replace anything.
Now it properly handles non-ASCII separator. Additionally added a fast path for when all runes in the input path as well as the replacement separator are simple ASCII.
Test added.