ampersands and semicolons aren't reencoded

hi,

if the request contains ampersands and semicolons, they're not reencoded correctly. attached failing test shows the bug. I think the solution is to use CGI.escape/unescape instead of URI.encode/decode, but I'm not totally sure because HTTP_REFERER, for example, might need URI.encode/decode.

in our app, this bug was visible because with the middleware present, parameters whose values contained "&" or ";" were truncated.

thanks!