[CORE] scheduler: Introduce arch_vcpu_orphan_preempt() for Orphan VCPUs

This patch introduces arch_vcpu_orphan_preempt() API which can be
optionally provided by architecture specific code to have faster
yielding/preemption of Orphan VCPUs

Till now we were dependent on vmm_timer_event_expire() for yielding or
preempting Orphan VCPUs. The issue with this approach is that not all
hardware clockchips are accurate, robust and fast so, implementing an
expire callback is always tricky. Usually, the clockchip expier callback
will have a polling loop which will potentially waste lot of CPU cycles.

Once all architectures (primarily ARM & x86) move from
vmm_timer_event_expire() to arch_vcpu_preempt_orphan(), the
arch_vcpu_preempt_orphan() will be mandated for all architecture supports.

Signed-off-by: Anup Patel <anup@brainfault.org>