I was not able to find a better solution to support punycode-encoded domain names and relative paths include dots.

To punycode-encode international domain names, it's needed to `parse` and `normalize` URIs.

```ruby
j = "http://日本語.jp/a/b/c/d/e/../../sp ce"

Addressable::URI.parse(j).normalize.to_s
	==>"http://xn--wgv71a119e.jp/a/b/c/sp%20ce"
Addressable::URI.normalized_encode(j)
	==>"http://日本語.jp/a/b/c/d/e/../../sp%20ce"
Addressable::URI.normalize_path(j)
	==>"http://日本語.jp/a/b/c/sp ce"
Addressable::URI.normalize_component(j)
	==>"http://%E6%97%A5%E6%9C%AC%E8%AA%9E.jp/a/b/c/d/e/../../sp%20ce"
```

In my understanding, the `Remove Dot Segments` described in RFC 3986 removes '.' and '..' when normalizing URIs. So I think it's not suitable to use `normalize` method simply in this case.

```ruby
path = "../../needs_index/"

uri = URI.parse(path)
uri.path
	==>"../../needs_index/"

uri = Addressable::URI.parse(path)
uri.path
	==>"../../needs_index/"
uri.normalize.path
	==>"needs_index/"
uri.normalized_path
	==>"needs_index/"
Addressable::URI.normalized_encode(uri.path)
	==>"../../needs_index/"
```

But I do agree more cleaner solution is better.