Hash#except is expensive and this is a hotspot, so use a dup + delete
make the module version quack the same as the instance

this way we can stop checking respond_to on every call.
extract route key translation to a method and reuse it
reduce conditionals in url_for
typo: resulution -> resolution [ci skip]
add a test for passing two models to the polymorphic_url method
add a test with three objects
always pass a list to build_named_route_call
remove extract_record since we have extracted the list
stop popping in build_named_route_call
record as a hash is not possible, so rm branch
we always convert this variable to a list, so we can remove the unconversion
only do the Array is_a check once
skip another Array is_a check
pull nil checks up
push all is_a tests up, always pass options to the named route
pulling helpermethods up before refactoring
small refactoring
simplified route method name generation
remove unnecessary array allocations