Acquire the mailbox lock when cleaning up a process after termination
When a process terminates, we finalise all of its blocks and send them back to the global allocator. If another process sends a message to it in the mean time, we may end up corrupting memory.
In addition, we should not send a message to a process that has just terminated itself. Messages sent to a terminated process will never be received, meaning their memory is not released until the last reference to the process is gone. We can probably mark a process as suspended by tagging a bit in the