This replaces the current ad-hoc implementation,
by syncing the code from InstCombine's implementation in InstCombinerImpl::visitUnreachableInst(),
with one exception that here in SimplifyCFG we are allowed to remove EH instructions.
Effectively, this now allows SimplifyCFG to remove calls (iff they won't throw and will return),
arithmetic/logic operations, etc.
Invoke or catchswitch.