[ty] Thread provenance through constraint set relations (#29142)
Constraint set relations now take a `ConstraintProvenance` parameter,
allowing the provenance of the constraint set to be chosen upon
construction, instead of a forcing a second pass to create a set of
validity constraints. See
https://github.com/astral-sh/ruff/pull/28909#discussion_r4196400566.