[CORE] Update bootup sequence to justify meaning of arch_cpu_early_init() and arch_board_early_init()

We cannot have meaningful code in arch_cpu_early_init() and arch_board_early_init() with just host aspace and heap APIs.

The actual intention behind arch_cpu_early_init() and arch_board_early_init() is to have early iomappings, system device init, clocking init, etc.

This patch restores intended meaning of arch_cpu_early_init() and arch_board_early_init() by initializing host aspace, heap, device tree, and host irq before these early functions. This way we can also use device tree and host irq APIs in early init functions.

This patch also fixes device tree init and ACPI table init for Xvisor x86_64 to ensure x86_64 bootup sequence don't break.

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