[CORE] API to check whether timer subsystem has started on current host CPU

It can be quite handy at boot-time to know whether timer subsystem has
started or not on current host CPU. The timer subsystem started on
current host CPU means that Xvisor is completely up-and-running on
current host CPU.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] net: Use async IPI for netswitch init on each host CPU

The sync IPI is called in IRQ-context hence not good for doing
complex init work hence we use async IPI for netswitch init.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vmm_manager: Convert manager spin lock to mutex

Currently, we protect VCPU allocation, Guest allocation, and
VCPU iteration using global manager spin lock. This means
thread holding this global spin lock cannot be scheduled-out
or preempted.

This patch converts global manager spin lock into a mutex
lock so that threads holding it can be preempted. This will
make life lot simpler for writing load balancer where we
would require to iterate over all VCPUs.

Signed-off-by: Anup Patel <anup@brainfault.org>
[x86] Virtualize EFLAGS.IF and handle physical interrupts.

o Do a VMEXIT on physical interrupt.
o Virtualize EFLAGS.IF so that non-maskable interrupts
  are not held by guests.

Signed-off-by: Himanshu Chauhan <hschauhan@nulltrace.org>