kmalloc properly aligns everything now. I also changed so that kmalloc addresses are stored as uintptr_t instead of void* or uint8_t* for easier arithemetic and less casting