Memory map: Put the kernel at 0xf0000000, etc

Move kernel to 0xf0000000

After the kernel is loaded, set up the MMU and map the kernel memory to
0xf0000000, data to 0xc0000000 and physical RAM and devices to 0x80000000
onwards, allowing all the memory below 2GB to be used for processes.

Add a separate section ("initsys") which performs the kernel initialisation
and memory map. This section takes up a 4K page, which can be reused after
the kernel is booted.

The .bss section is no longer included in the kernel binary. Add code to
clear it on boot instead.

Move the interrupt vector code back into .text and configure the ARM to call
the code where it is located, rather then trying to move it to the right
place.

Add more code to handle virtual memory addresses

Remove test memory mappings and read/write code

Remove the test entries in the starting memory map, and the test code which
read/wrote those locations
Add minimal support for qemu emulation

Unlike a real Raspberry Pi, qemu doesn't return framebuffer size on boot in
response to a mailbox query. If the size comes back as 0, assume qemu and
set 640x480
Update README