Ensures all AndWhichConstraint occurances provide the the singular, correct object.
Defers evaluation of potentially exception throwing logic concerning
AndWhichConstraints until actually used.  Provides more descriptive
failure message when `Which` cannot be used.
Added unit tests over the Which-related failures