WIP - Do not encode reserved characters

There are a set of reserved characters in rfc 3986 which are not in
2396, unfortunately golang does not include these characters in url.go
and therefore they get percent-encoded in the proxy rather than being
passed through (note this is because gorouter is not currently a
fully transparently proxy -- it decodes and re-encodes the URLs on the way
through). This commit duplicates the parsing logic from golang's version
of url.go in order to add the extra reserved characters from rfc 3986.

[#77014252]