arm: virtio board support

This commit consists of a bunch of changes which improve our FDT
support and add support for the virtio board type from qemu.

FDT changes:
 * Add a struct for returning memory address/size pairs.
 * Add code to find out how big the address/size properties are.
 * Add code to return data.
 * Use this API in ampintc and virtio.
 * Implement a way to get the interrupt controller of a device.
 * Implement a way to find out the cell size, so that we can
   read the interrupt number.
 * Add API to get interrupt number.
 * Use this API in virtio.

Virtio:
 * Implement basic construct for virtio board virt.
 * Have virt use it's own device attaching mechanism.
 * Iterate through fdt nodes and try to attach all nodes.
 * Add Virtio MMIO driver.
 * Make virt board use virtio drivers and attach to the MMIO driver.
 * Write a small driver for the virtio pl011 uart, based on the
   i.MX6 driver.