Because if I do it in `Connection`'s constructor, then it doesn't handle the case where someone sets solvers after they create the object. In general, I think we need a better way of organizing checks on our Objects; can descriptors help with this (i.e. mutually exclusive parameters)?