1. epoll: remove fd from epoll instances on close() — prevents
use-after-close where a reused fd number would monitor the
wrong file. Also auto-remove stale entries in epoll_wait.
2. clone: validate flags against CLONE_SUPPORTED_MASK — unknown
flags (CLONE_NEWPID, CLONE_NEWUSER, etc.) now return EINVAL
instead of being silently ignored.
3. futex: cleanup waiters on process exit — futex_waiters table
moved to file scope; futex_cleanup_process() called from
SYSCALL_EXIT prevents UAF when FUTEX_WAKE dereferences a
freed process pointer.
4. ksem: fix infinite spin when waiters array full — replace
schedule() spin-yield with process_sleep(1), and increase
KSEM_MAX_WAITERS/KCOND_MAX_WAITERS from 16 to 64.