[CORE] Introduce Boot CPU APIs for SMP host

Currently, we were assuming that Xvisor will be always booted on
CPU0 (i.e. "Boot CPU" is CPU0) which can break our SMP booting in
following use-cases:
1. In AMP system, Xvisor might run on M CPUs out of total N CPUs
and these could be any M CPUs.
2. Faulty HW where CPU0 never boots.

To make our SMP booting independent of underlying CPU number, we
introduce concept of "Boot CPU" and related APIs.

As the name suggest, "Boot CPU" is nothing but the CPU on which
Xvisor starts booting. New added APIs related to Boot CPU are:
1. vmm_smp_bootcpu_id() - SMP processor ID of Boot CPU
2. vmm_smp_set_bootcpu() - Mark current CPU as Boot CPU. This
API will only work once for CPU who first calls it.
3. vmm_smp_is_bootcpu() - Check whether current CPU is Boot CPU.

We also depericate vmm_init_secondary() API and make vmm_init()
intelligent to handle Boot CPU and Non-Boot CPUs differently.

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