First working version of the ELF loader

Can load ELF64 files and setup the PCB
Added conditional compilation for debug statements
Fixed some bugs in the paging code

Fixed the virt_clone_mapping, didn't properly clone a page directory.
Still doesn't handle copy-on-write, but works for cloning the kernel.

Added conditional compilation statements for debug printing

Moved write_cr3 to the header file

Added extra parameter to virt_map_page() to get the actual physical page
used in the mapping.
Added code to properly save the context on interrupt
Added memcpy
Moved the watermark allocator to a different address
Fixed bug in the watermark allocator
Added conditional compilation for debug statements
Added context pointer and page table pointer to PCB
Updated virt_map_page()'s definition
Added some code to initialize the first process

Not fully done, and mostly test code. But successfully starts the init
process.
Moved KERNEL_BASE definition to header file
Made an assembly version of the C runtime instead
First init process, cascades 'Hello World!' to the screen
Added context structure for interrupts
Copy of the kernel's inttypes.h
External definition for the timer module
Added calls to initialize other modules
Added another warning, added init program