Disabling IRQ 2, it seems to be a special IRQ for the PIC

It generates a lot of interrupts and all the information I could find
about it was that it's meant for internal use for the PIC and is
normally never generated.
Added a usb target and increased VM RAM

-- Increased the RAM amount to check for errors with the initial memory
allocation. The mmap and paging modules init routines need some more
work to be better/more resilient, but they're coming along. It now
supports more RAM and more than 1 memory region, but still pretty basic.
Reworked how the mmap module finds memory regions

It now supports more than one region, but is still a little fragile.
The paging module now supports more than 1GiB of RAM

Before many assumptions were being made about where the memory regions
were and what was available for us. When testing on real hardware the
'choose largest region' broke because that region was not directly after
the kernel and when trying to map the region things broke.

Also the paging_init() function was using the kmap_page_range() function
which relies on the physical allocator. Unfortunately the physical
allocator is not setup at this point and that created a fault/double
fault. Now it manually checks and allocates the tables, this is a one
time setup anyway, after this the physical memory allocator can be used
without issue.
Have to enable paging before the physical memory allocator

...duh
Added note about MMAP module
Interrupts work! Yay!

With the addition of the previous mmap fixes interrupts even work on
real hardware! It's always a good thing to incrementally test things on
hardware because QEMU is a little too forgiving in some areas. For
example it allowed the use of unmapped pages without faulting,
unfortunately real hardware was not so nice :)