Ops like builtin.unrealized_cast are meant to be folded during dialect
conversion. Update dialect conversion driver to fold ops with trait
FoldOnDialectConversion irrespective of whether they are marked illegal.
This revision also moves the check on "ignored ops" to earlier which has
functionally no impact but potentially an efficiency win.