kernel: better mm dropping page_list from process

The page_list approach had issues (each page could reside in only 1 process,
which caused mem leaks). We now drop this references, and clean up everything
using the page directory for each process.
kernel: fix return values of fork()

The one returning 0 should be the caller of fork, not the new process
kernel: fix uninitialized variable
kernel: fix bug in page refcounting

We were decreasing the refcount of all pages with the present bit, but that
meant also kernel pages (and in particular all pages, since they are identity
mapped as not-user in case they are not used). Now we only add/free references
for pages marked as user