[CORE] Make few architecture dependent functions optional

This patch makes arch_host_irq_init(), arch_clockchip_init(), and
arch_clocksource_init() optional for architecture specific code by
providing weak implementations of this functions in core code.

Now architecture specific code can also use VMM_HOST_IRQ_INIT_DECLARE(),
ARCH_CLOCKCHIP_INIT_DECLARE(), and VMM_CLOCKSOURCE_INIT_DECLARE() macros
to provide device tree based initialization callbacks.

In future, we will try to totally remove arch_host_irq_init(),
arch_clockchip_init(), and arch_clocksource_init() for Xvisor ARM
so that we can aim for device tree based probing for all types of
devices (including PIC, clockchip, and clocksource). This will
eventually help us to provide single Xvisor ARM binary which
boots on multiple boards and only DTB will be board specific
(just like Xvisor ARM64).

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