AbstractTransformer #1557: Added a method to check if a ProducedType contains a type param, and one to check for dependent type parameter containing a type param and erased

For example Tuple's first type param is dependent (its other type params depend on it),
and Tuple<T,T,Empty> has a dependent type arg which is a type parameter but not erased,
while Tuple<T|U,T|U,Empty> has a dependent type arg which contains type parameters and is erased
ExpressionTransformer #1557: special raw cast when that case happens
Test for #1557: Generic method with identical types causes "backend error"