[runtime] Pass the MonoThreadInfo explicitly to mono_thread_state_init_from_handle to avoid nested hazzard point usage.

This function was called from code that uses hazard pointers, so their values could get overridden.
Besides that, we did not clean up the hazard pointer table afterwards, which is wrong too.
[runtime] Fix a hazard pointer leakage in mono_thread_info_resume.

mono_thread_info_lookup leaves the current value on hazard pointer 1,
so all callers must clean it afterwards. This was not done in all cases
by mono_thread_info_resume.
[runtime] Fix hazard pointer usage in the suspend sequence.

We now have a pair of functions to match mono_thread_info_safe_suspend_sync.
They should be used instead of mono_thread_resume as they do the right thing
WRT to hazard pointers.