fixed duplicate key exception

If the value of VaryByCustom is equal to a key that has already been
added to the route values, there will be a conflict.  Instead of add, it
now adds or replaces the given key.
Huge thanks to @anorborg