[CORE] Re-organize struct vcpu and make it more SMP safe

This patch does number of changes to struct vcpu in-order to make
accesses to vcpu instances SMP safe in vmm_manager and vmm_scheduler.

Now we have two separate spinlocks to protect scheduler context and
load balancing context in a VCPU instance.

Also, the VCPU state is considered as part of scheduler context
of a VCPU instance hence VCPU state should be accessed only after
acquiring 'sched_lock' of VCPU instance.

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