first impl of exit_status and tracking child threads

now each thread keeps a parent_tid and a child_list
the parent_tid is the tid of the thread that called thread_create
the child_list is populated whenever process_execute is called,
filling it with the tids of the processes spawned.
each tid also has a spot for the exit status, which defaults to -1

this is because once the process exits, we can no longer access
any of its memory.  so when the process exits, it updates its
parents entry for its exit status, which process_wait looks at
when the process dies.

the exit status is only updated in the syscall (syscall.c), so if the
process dies for any reason, process_wait will return the default
value of -1 as required.