runtime: make sure halt() is not called before abort() message is printed

Concurrent abort() call will call osv::halt() immediately which may
result in a halting NMI being delivered to the CPU which is in the
middle of printing the abort message. This can lead to silent aborts
with no message on the screen. To make debugging easier, let the first
aborter call osv::halt(), others will just spin and wait for the
leader to halt all CPUs.

Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>