Cleanup: Delay free of the destroy_called_mark_hash.

Freeing of the destroy_called_mark_hash needs to be delayed until
after the last gc() call.

Fixes SEGV on exit if the gc on exit needs to destruct something
with an lfun::destroy().
Threads: Added inhibition of thread signals.

Some code really doesn't like getting errors thrown (cf code
that uses fatal_on_error()), so add a simple way of delaying
such errors until the critical section is done.

Also makes sure that the thread interrupt signal doesn't get lost.
Objects: destruct() now uses THREAD_FLAG_INHIBIT.

destroy() could leak/fatal if the thread received a signal
(eg due to cleanup_thread_state()). Delay any such signal
until destroy() is done.

Fixes fatal "Shouldn't get an exception in destruct()." on exit in
async_tls_close_test in pikes compiled --with-cleanup-on-exit.