kernel: if a thread isn't sleeping and isn't a zombie, make sure it'll at least eventually get woken up in Semaphore::release()
kernel: set interrupted flag when we send an event to a thread (as we take it from sleeping into ready).
posix: handle suspended and continued exit statuses as "everything is okay" statuses in exit()
console: handle interrupted semaphores sanely
kernel: Process::resume() takes caller to Ready rather than their previous state, EINTR in read()
posix: better debugging in waitpid.
kernel: undo thread interrupted flag change in sendEvent, this is horribly broken and wrong.

Semaphore::acquire loops around after getting rescheduled to Ready and
attempts to acquire again - it is entirely safe to wake a Sleeping thread
without worrying about side effects in locks.