Fix mono_liveness traverse_array to handle struct of arrays correctly. Runtimetests didn't cover the case of containing actual value types in the struct mixed with reference types.
Add GC_stop_world_external and GC_start_world_external that properly disable signals and acquire GC locks before calling GC_stop_world and GC_start_world respectively. Use these new functions external of GC in liveness code. May fix case 530367.

Conflicts:

	libgc/misc.c