[CORE] Mandate emulator for both real and virtual device regions

Generally, we use manifest_type=virtual and
device_type!=(ram|alloced_ram|rom|alloced_rom) for
specifying emulated/virtual device.

We would be using manifest_type=real and
device_type!=(ram|alloced_ram|rom|alloced_rom) for
specifying real/pass-through device.

In addition to above, a pass-through/real device would
also require configuring IOMMU/SMMU before the device
is accessed by Guest. Upon Guest reset we might also
require to cleanup/reset device state because Guest OSes
typically don't cleanup device state on reset.

To tackle, the above we mandate emulator for both
real and virtual devices. This means for having
pass-through access to a device we will require
a emulator for it which will handle setup and
cleanup or pass-through device.

This patch updates vmm_guest_aspace and vmm_devemu
to achieve the above.

Also, this patch will break guest creation for guest
requiring VGIC hence subsequent patches fixes VGIC
emulator for allowing pass-through access to VGIC
virtual CPU interface.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] vgic: Register separate emulators for dist and cpu interface

Now we need to provide emulator for pass-through access to VGIC
virtual CPU interface hence this patch updates VGIC code to provide
two separate emulators for Guest GIC dist and Guest GIC cpu interfaces.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] No need to specify host physical address for VGIC CPU interface

Updated VGIC emulator registers separate emulator for VGIC CPU interface
which automatically updates the host physical address in Guest VGIC CPU
region hence we don't need to explicity specify it via device tree.

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