Add procfs, replace process syscalls with /proc interface
* Add procfs subsystem (procfs.c/h): create /proc/<pid>/{stat,pid,
ppid,uid,gid,pgid,sid} and /proc/self; register/unregister entries
on thread create and destroy
* Replace sched_list_procs() with sched_proc_snapshot(pid, snapshot);
move get/set uid, gid, pgid, setsid logic into scheduler; add
cpu_time_ticks field and accumulate in sched_tick
* Remove SYS_GETPID, SYS_GETPPID, SYS_GETUID/GID, SYS_SETUID/GID,
SYS_SETPGID/GETPGID, SYS_SETSID, SYS_GETPROCS from the syscall
table and renumber the remaining entries
* Re-implement getpid, getppid, getuid, getgid, setuid, setgid,
getpgid, setpgid, setsid in libc_usr via /proc reads and writes;
add proc_stat_parse() and proc_stat_read() helpers in proc.c
* Rewrite ps and shell pgrp_state() to enumerate /proc via getdents
and read per-process stat files instead of calling getprocs()