mem -s: print KAPI data

kernel/kernel.s:
	add labels for kapi begin/end

kernel/mem.s:
	print kapi section.
	fix rel/abs.
keyboard fix: scroll handler.

kernel/keyboard.s:
	buf_putkey doesn't handle scrolling; call kb_task directly,
	when KEYBOARD_TASK is 0.
libc/pe fixes.

	Summary:

		Make the a.exe from sandbox/exe, compiled against the C prototype
		for kernel/libc.s, work.

kernel/libc.s:
	made some more methods flat-addressable.

kernel/pe.s:
	remove hardcoded start address - start at offset in pe file.

sandbox/exe/Makefile:
	fix dependency.

sandbox/exe/lib.s:
	fixed some declarations;
	removed empty method bodies where possible.
Add kernel relocation table to ramdisk.

DOC/Architecture.txt:
	some notes on memory mapping, relative selectors, security,
	and inter-task-communication.

Makefile:
	generate kernel relocation table and inject it into the ramdisk.

bootloader/sector1.s:
	load the relocation table ramdisk entry. [todo: loop]

kernel/debugger.s:
	define kernel_reloc/_size, update ramdisk table entry printing,
	and load/initialize the relocation table (but do not execute).

	partial work: toggle trap flag.

kernel/realmode.s:
	define and initialize the relocation table flat memory addresses from
	the ramdisk image.

util/reloc.pl:
	uses objdump -r to dump the relocation tables, parse the text,
	and write a binary form:
		.long num_addr16; .rept <num_addr16> .word ?; .endr
		.long num_addr32; .rept <num_addr16> .long ?; .endr
	It also can parse the generated file.