Add vfork support
Clean up process switching

Use the inner sharable tlbi operation and add the requires dsb and
isb instructions around the tlb flushing.
Invalidate all TLB entries in pmap_protect

This is more than we need to invalidate, but it gets us a working
userland.
Spell out wired in the flag name

It's easier to remember what the flag is for this way.
Make efisimplefs debugs silent when not debugging
Add EARLY_UART_PA/VA to ARM/ARM64 options

This options are supposed to be used as a replacement for hard-coded
values of EARLY_PRINTF UART addresses. It is assumed that UART's
PA and VA may differ.
Add support for EARLY_PRINTF to PL011 UART

Adds early_putc routine for the driver. Requires EARLY_PRINTF and
EARLY_UART_VA defined and set to a reasonable value.
Appropriate mapping VA->PA ought to be created during early init stage
as well.
Use EARLY_PRINTF in a more generic way on ARM64

From now when EARLY_PRINTF option is defined,
the PA->VA mapping is created in locore.S for a 1GB
block containing UART registers. The addresses are taken from
EARLY_UART_PA/VA options, therefore they have to be defined and
specified to a correct value.
PL011-specific early_putc routine has been removed from
machdep.c since there is a dedicated one in PL011 driver.
Fix typo in arm64/autoconf.c
Rework and improve interrupts handling on ARM64

Clarify namespace
  - arm_ for general calls that could be implemented and exported by
    both architecture variants (64bit and 32bit)
  - arm64_ for specific structures and variables that may differ
  - get rid of cpu_ prefix derived from mips
  - make the names more straightforward (bus_setup_ calls arm_setup_, etc.)

Implement missing interrupts management routines, rework old ones
  - Implement teardown and config methods
  - Maintain table of dynamicaly allocated structures that describe each
    interrupt
  - Add locking
  - Reimplement all functions to get proper interrupts handling
  - Minor fixes to types, etc.

Fix issue with reversed order of interrupt parrent - child attachment
  - It is now possible to call bus_setup_interrupt before appropriate
    PIC is attached. Interrupts and handlers are configured during cold
    boot and in configure_final() the interrupts are actually enabled.

Adjust nexus routines
  - Call arm_setup_intr() once per bus_setup_intr() call
    - Don't forget to activate resource before using it
    - Resource start and end will not differ for BUS_RES_IRQ
      type resource. In addition this will override cookie parameter
      what will make related irq handler impossible to release.

Adjust GICv1/2 driver to use new PIC registeration method
Add interrupt statistics handling for ARM64. Remove them from exceptions.S
Add dummy arm_register_pic() routine to ARM to stay aligned with ARM64

This will partially fix the GICv1/2 compilation for ARM
Further clean-up of ARM64's exception.S
Add proper (C) to ARM64's intr_machdep.c.

Old (C) do not apply anymore since this file has more in common
with powerpc/intr_machdep.c now.