Fixed up timer and sending/receiving messages
- Cleaned up and put all timer stuff in timer.h and timer.c
- Initializing the delayed messages list in k_memory.c
- Removed disabling and enabling irq from the get_proc_by_pid() function
- Checking if the current process is an i-process before enabling irq in k_send_message()
- Now handling timer interrupts by disabling irq and doing a mock process switch, then calling the i-process