rev3 of exit_status

this implementation is even simpler

doing away with child lists and all that nonsense

a thread can be given a status int pointer
which is then updated when we call update_child_status if it is not null

process_wait creates a status int initialized to default of -1
it finds the thread corresponding to the thread id
checks that its not null and that its a child (check parent_tid)
then check that the status pointer is not allocated, if not allocate it
then wait until the thread is no longer in the alllist and return status
if it hasn't been set, it's still default -1 as desired
if it has, we get our exit code :)
some more changes to make this actually work