[Sema] Sink Pattern invalidation into `SyntacticElementTarget::markInvalid`
Rather than handling this in the callers of `typeCheckExpression`,
handle it in the constraint system's invalidation logic. This also
ensures we set a type for sub-pattern nodes.