refactor: maintain the boot order list with VMs

In the present implementation, the boot order is maintained through a
list of nodes contained by vCPU data structures.

Boot order protocol is a concept that naturally aligns with VMs. In
subsequent patches, we depend on the boot order for bootstrapping
execution contexts of MP endpoints on secondary CPUs. This motivates
us to maintain the boot order list with elements representing their
parent VM entries. This makes it simpler to obtain the vCPU to be
bootstrapped for initialization when a secondary CPU is turned on.

Change-Id: I333fa2b3188db99b2b52e7e43988a7a7b9fb7aef
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
diff --git a/src/arch/aarch64/hypervisor/handler.c b/src/arch/aarch64/hypervisor/handler.c
index 666141d..bf411f2 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -337,8 +337,7 @@
 	case SPMD_FRAMEWORK_MSG_PSCI_REQ: {
 		enum psci_return_code psci_msg_response =
 			PSCI_ERROR_NOT_SUPPORTED;
-		struct vcpu *boot_vcpu = vcpu_get_boot_vcpu();
-		struct vm *vm = boot_vcpu->vm;
+		struct vm *vm = vm_get_boot_vm();
 		struct vcpu_locked vcpu_locked;
 
 		/*