typeintersect: fix triangular vars handling outside constructor. (#58018)
Fix #57852.
The 'e->triangle' branch doesn't make sense for variables outside the
constructor.
Let pkgeval tell us if `constraintkind` based branches are suitable for
handling them.
(The second commit is needed to fix some stack overflow regression.)