Adding Semaphore to Handle(Join/Exit) + saveState in HandleExec()

Shell is now working properly! Arguments can be passed in and file
access works.

Tested:
sort — PASS
echo hi— PASS
cat echo.c — PASS