Add cache maintenance for ARM64 loader and clean/inv cache in elf64_exec()

It is required to clean all of the EL2 cache before jumping
to the kernel. Otherwise when we drop from EL2 to EL1 kernel data that
was not cleaned from the D-cache will be lost.
Temporary pass initial pagetables VA to pmap directly via variable.

This will help to drop the assumption that kernel is loaded
within 1GB of PA.
Add INVARIANTS to ARM64 DMAP_TO/TO_DMAP macros to catch out of range calls

KASSERTs will inform us when there was out of range PA or VA used
in DMAP_TO_PHYS() and PHYS_TO_DMAP().
Fix failure during initialization due to out of range DMAP allocations

Let the kernel direct map be as large as possible, which means
64GB 0x0 - 0xfffffffff. This fixes all issues related to calls
to DMAP for physical addresses beyond first 64 GB.
Make efisimplefs debugs silent when not debugging
Introduce simple identify_cpu() routine for ARM64

Add necessary cpufunction.
Detect and print:
	- implementer
	- part name
	- variant and revision
Set maximum range of physical address for EL1 mode.

Setup Intermediate Physical Address size bits in TCR_EL1 according to
PARange bits of ID_AA64MMFR0_EL1 register.