Fix asserted type in simplifyAssertTypeOp
The way I was doing this used Type::operator- and was intentionally
suboptimal to work around operator-'s limitations. This is a new version of the
same logic, without using operator-.
This also exposed an issue where certain type predictions were causing us to
lose type information. I fixed it by making sure CheckStk's typeParam is always
as refined as possible, and adding some logic in codegen to avoid specialized
type tests when not needed.
Reviewed By: @jdelong
Differential Revision:
D1186725