Moved user stack code into stack.c

There is still much to be implemented but this is a start. I also fixed
a bug whereby the starting esp wasn't properly set up to read argc and
argv.

Also added some fields to thread_struct and proc_struct about stack and
argc/argv.