Subtract 1 from all GDT and IDT pointers

- GDT and IDT pointers measure size in bytes MINUS 1 instead of just their
  size like I thought.
Transfering to a linux build host + rewritten the makefile
Fix warning in fatfs code used in fatcli
Rewritten interrupt assembly code to use one hardware isr

- This greatly reduces the amount of interrupt assembly code (when compiled)
- Nothing special happens in intr_asm.s anymore - special stuff will be
  done in intr.c
- Added IntrContext structure which will be needed soon
Added skeleton interrupt handler + fixed some bugs

- The interrupt handler does all the "easy" non L4 stuff so far
- Added ISRs for ignored interrupts
Implemented the initialization code for the IO APIC
Moved APIC interrupts to the 240 range

- In addition, the comment about the spurious vector being a multiple
  of 16 and < 128 is completely wrong. Infact it should have the lower 3
  bits set and is 0xFF in many OSs
- Interrupt 0xFF cannot be used by IO APICs so we might as well put the
  spurious vector here
- The interrupts at the higher end are also higher priority
Fixed some bugs in the IO APIC system
Removed reference to ACPI CMCI register

- Bochs really doesn't like this register (and it's probably disabled anyway)
Using gnu99

- Nothing uses any C11 features and some (strange) people havn't upgraded