added locking and ref counting to file pointers
added thread_shared_data destroying to exit
moved file pointers to thread_shared_data
moved pwd and root into thread_shared_data
moved uid and gid to thread_shared_data
moved some signal stuff into thread_shared_data
cleaned up fork
threads can now share signals, files, uid, and gid