Store all VMs together.

In preparation for the primary VM becoming less special, particularly in
the context of IPC where any VM will be able to talk to any other VM.
The primary VM takes ID 0 and the secondary VMs take the IDs from 1.

`hf_vm_get_count()` now returns the total number of VMs including the
primary.

`hf_rpc_request()` block reflexive calls as there is no good reason for
them and the error has the chance of catching bugs in the calling VM.

Change-Id: Ic95ef0ab8b967bbbd3232c207c53074cff8e138d
diff --git a/src/cpu.c b/src/cpu.c
index 185d993..2c09d81 100644
--- a/src/cpu.c
+++ b/src/cpu.c
@@ -9,6 +9,8 @@
 #include "hf/std.h"
 #include "hf/vm.h"
 
+#include "vmapi/hf/call.h"
+
 /* The stack to be used by the CPUs. */
 alignas(2 * sizeof(size_t)) static char callstacks[MAX_CPUS][STACK_SIZE];
 
@@ -74,7 +76,8 @@
 	sl_unlock(&c->lock);
 
 	if (!prev) {
-		struct vcpu *vcpu = &primary_vm.vcpus[cpu_index(c)];
+		struct vcpu *vcpu =
+			&vm_get(HF_PRIMARY_VM_ID)->vcpus[cpu_index(c)];
 		arch_regs_init(&vcpu->regs, entry, arg);
 		vcpu_on(vcpu);
 	}