Moved sections around, so file end = kernel end

This is because we want to append the init process right after the
kernel, and it would otherwise interfere with the BSS section.
Programs no longer take 2MiB of space

There were some linker problems and the default program size was 2MiB,
this has been fixed.
Added an UNUSED(X) macro

Can be used in places where we know the parameter is unused and don't
want the compiler to complain about it.
Added some more ELF defintions

Some architecture specific constants are defined in the arch/ folder for
ELF.
Fixed some problems

The memory subsystem no longer uses addresses lower than the kernel's
base address (0xFFFF...8000...). Fixed some bugs related to this.
Load GDT/IDT using the mapped kernel space addresses

This is to keep everything uniform. The kernel won't have any address
mappings below the kernel's base address.
Fixed some bugs in the Stack module

The stack module now checks the size instead of the top pointer, because
the top pointer may actually be pointing to 0x0.

Also inlined the empty and size functions.
Fixed allocation bug in the watermark allocator

Should decrement the size before handing back the pointer...
textmode module now uses kernel space addresses
Inlined inb/outb
Initial timer module
Interrupts now only use kernel space addresses
Added virt_reset_table() declaration