remove :constraints from IGNORE_OPTIONS
remove :defaults from the IGNORE_OPTIONS list
:only is never used in Mapping, so rm the key
remove IGNORE_OPTIONS
only look up scope[:module] once
no longer need the scope ivar
change defaults allocation to a one-liner
only loop through constraints once
only loop over `options` once (hopefully)
return early from add_request_method
only do Regexp === option once
remove options as an ivar
push options_constraints processing up

this lets us reduce is_a checks on the options_constraints and push
"callable constraints" verification to the right place.
only do is_a checks on `formatted` once
move options_constraints tests next to each other
add tests for nested lambda constraints
push some options munging to an alternate constructor
add tests for mixing :to and controller / action
use the factory method to construct the mapping
Fix regression on eager loading association based on SQL query rather
than existing column.

Fixes #15480.