Defined a virtual disk device, 'virt-disk'
virt-disk: started implementation
pegasus: catch SIGINT and do a powerdown event (print all PCs and IFFs)
arch-spec: fix some remarks in the MMU IO definitions
pegbox: Distinguish between spin_lock_irqsave and plain spin_lock

Also fixes a bug in pegbus interrupt setup.
virt-disk: raise interrupt on command completion or error
pegbox: implement list_replace
pegbox: design notes and memory map for kmalloc
pegbox: setup_mem_map: no need to zero mem_map; it's in .bss
pegbox: setup_mem_map: no need to take the mem_lock, we're still in UP
pegbox: begin kmalloc implementation and add test calls to exec_init
pegbox: add errno for ENOSYS
pegbox: correctly HALT on panic() even before start_main

wait_to_start needs to know whether CPU0 hasn't finished setup yet or whether
 a panic has occurred.  Previously both were indicated by a value of 0 in
 can_start_other_cpus; now the latter is a value of 2 (although the consuming
 code will treat any value other than 0 or 1 as "panic happened").
Also change _int_timer_schedule as it reads this value as well.
pegbox: spinlock: define SPINLOCK_UNLOCKED constant (for initialisations)
pegbox: more progress with kmalloc

We now find a free block, but don't attempt to split it if it's too big.
pegbox: implement the rest of kmalloc; no idea if it's correct though
pegasus: add -Cpage,file option to dump a page of core on exit
pegbox: fix a couple of bugs in kmalloc implementation
pegbox: implement a really dumb kfree

It doesn't merge adjacent free blocks, so gradually memory gets fragmented.
pegbox: kfree: merge next block if free