Added space for a TSS segment descriptor

Also aligned entries in the GDT to 16 bytes
Initial interrupt code

Creates a TSS and installs it.
Initializes all of the interrupt vectors.
Tests to make sure interrupts work.
Initial code for the assembler interrupt wrapper.
Added interrupt initialize definition

Added function declaration for the generic part of the kernel
Kernel now initializes interrupts after virt memory
Changed the default memory size for qemu
Separated interrupts and tss initialization
Removed TSS code from interrupts

Placed the TSS specific code into another file
Fixed the data segment descriptor in the GDT

Also set all segment registers (besides CS) to it.
Initial revision of the interrupt handlers

Now uses isr stubs to save/restore the registers. This will still change
because it doesn't support switching processes and the ordering hasn't
been fully thought out yet.
Some helper functions (CPUID, READMSR)

This are needed to setup the processor's APIC for the external interrupts
Initial version of the APIC initialization code.
Merge branch 'virt_memory' into interrupts
Fixed physical address problem

The physical memory manager was accidentally giving out the kernel
mapped addresses instead of the actual physical addresses.
Added a macro to convert physical addresses to kernel ones
Fixed some bad macros

A few of the macros were shifting when they should have been masking
Added clear_screen() to the text mode module
Added some functions and forced inlining for some

Removed the assembly definitions of the in/out instructions, they were
not using the correct calling convention. Also they're all specified
using the inline assembler and forced to be inlined.

Added a writemsr function
Disabled the local APIC, for now using the legacy PIC

Since it's easier to get moving along the legacy PIC is being used, and
later if time allows the newer APIC will be used.
Print to screen and serial port now

Since the in/out instructions now work properly the debug serial port
can be used in addition to the screen!
Removed some test code from kmain

Also the virtual memory subsystem currently initializes the debug
printing, this will eventually be moved to somewhere that makes sense.
It's only there now because that's the first system to be started by the
kernel.