Making UrlHelper's methods virtual

/cc: @rynowak @yishaigalatzer 
I believe in the old code `valuesDictionary` was always a copy of what the user passed in (because our public entry points guaranteed that). Make sure that's still the case by writing a test. (If I pass in my own `values` dictionary, you don't add to it).