Improve test run diagnosability
Improve test run diagnosability

The "throw 42" logic is pretty unfriendly for test run diagnosability -
we can't bucketize the failure. I'm updating it so that we capture some
diagnostic information (the runtime entrypoint called) at the throw
site.

I'm also adding a catch block so that the C++ runtime doesn't pop a
dialog about the unhandled exception and we get a chance to print the
error message.

I'm also fixing a bug in the casting logic that was found in the test
runs. I know the placement of the check is not perf-optimal (or
logical), but hopefully we can call the real casting helpers soon.

shrah/corert,manu-silicon/corert,yizhang82/corert,gregkalapos/corert,gregkalapos/corert,kyulee1/corert,schellap/corert,krytarowski/corert,yizhang82/corert,shrah/corert,tijoytom/corert,tijoytom/corert,schellap/corert,shrah/corert,krytarowski/corert,schellap/corert,sandreenko/corert,manu-silicon/corert,mjp41/corert,mjp41/corert,mjp41/corert,botaberg/corert,botaberg/corert,sandreenko/corert,gregkalapos/corert,krytarowski/corert,gregkalapos/corert,tijoytom/corert,kyulee1/corert,sandreenko/corert,mjp41/corert,shrah/corert,manu-silicon/corert,schellap/corert,botaberg/corert,yizhang82/corert,sandreenko/corert,manu-silicon/corert,schellap/corert,yizhang82/corert,manu-silicon/corert,tijoytom/corert,botaberg/corert,krytarowski/corert,mjp41/corert,kyulee1/corert,kyulee1/corert