Changed how the panic() function works

The panic function now includes the file and line number as well as the
panic message. It works exactly how the runtime ASSERT macro works. A
new file was added, macro.h, to keep the common C pre-processor macros
in one place. Both safety.h and panic.h needed the string expansion
macros, but safety.h depends on panic.h, so panic.h couldn't include
safet.y without making a circular dependency, macro.h solves this.
Added script to auto-create a terminal for QEMU serial
Closer to finishing the parsing of the MP tables

Lots of useful information is contained in the MP tables. It includes
the number of processors, I/O APIC locations, APIC locations, processor
APIC ids, processor feature flags... All kinds of stuff. Right now the
tables aren't being used for anything, but they are recognized.

More work needs to be done for enabling the I/O APIC and turning the
interrupt mappings into something useful.