Add match*? to unstable/match
Fix union merging

Trying to merge (and thus resolve) applications of struct
types would cause infinite looping on type instantiation
if the struct type used both a union and recursion.

Closes PR 13821
Improve TR test case