Normalize escaped characters correctly

Not all escaped characters should be escaped. Normalization should take
care of this. A better approach is to simply do
encodeURIComponent(decodeURIComponent(...)).

Path and query segments are now normalized in this way. + should be
replaced only in query string with space, not in path segments or hash
(hash/anchor can contain many characters, + as well).

Normalization of index.html is quite aggressive and far from universal.
Made it optional.

A good reference for normalization techniques and pros/cons is:
https://en.wikipedia.org/wiki/URL_normalization