Remove some cruft and change how a lot of functions work

- Page faults now enter a critical section before panicking to avoid secondary interrupt calls
- the "Bnyeh" logo is now a macro, making it useful elsewhere in the code
- Work to check if the kernel is running in an already initialized environment like linux (since it's compiled as ELF for the moment)
- Added kern_cleanup function which is called in assembly (start.S) after kern_start is called. This will clean out memory spaces in the future
- Add a bunch of short-hand macros for attributes
- Add MemoryReduce and MemoryReduceSuffix functions to reduce the amount of memory into a human readable form
- Added a really horrible detectMemory function which will likely be removed and replaced with straight assembly
- Rewrote the panic function so that prior to panicking, it will disable interrupts, dump the cr0 and cr3 registers, then disable paging and print a panic message. This allows the user to see that it's a panic and also help prevent a double (or tripple) fault in the panic handler.
- Added bzero, explicit_bzero, and timesafe_bcmp to string.h. These functions avoid TOCTOU exploits and compiler optimizations. I may add explicit_memset later.