Improve the VM exit strategy.

It now doesn't try to do all the cleanup work by default, instead
leaving it to the OS, which can no doubt do it faster. There is now
a --full-cleanup flag for requesting full cleanup, however. In either
case, special effort to gracefully join foreground threads is made,
so "Thread.start({ sleep 1; say 'bye' }); say 'hi'" in Perl 6 will now
output hi\nbye\n reliably (and passing :app_lifetime will not show the
bye\n, and seems to exit cleanly too provided --full-cleanup isn't
passed).