fix typo and annoying gcc/clang unused return values in crash catcher

* Fix sucessfull with successful.
* Introduce an UNUSED macro that is safe on MSVC, gcc, clang and intel to help deal with unused returned values. 

We don't want to suppress the warning, because 9 times out of 10, we want the return value. In some cases, utility functions return an unused value since we modify the memory reference in the parameter list.