Zero all pages on allocation (pmm_alloc)
More stack growing work. Add 128 kiB at a time.

Linux has a 132 kiB (128 kiB + guard page?) stack as default, so my old
choice of 16 might have been a bit small.
Use less kernel stack space in the VFS
Implement hacky symlink ELOOP detection.

The limit is set quite low (about 5 links are allowed), mostly for stability
reasons. I doubt there are many cases where such a limit will matter in practice,
in this OS, though.
Set task kernel stack to 16 kiB
Major symlink/VFS work (rebased), see full msg

* Split chdir() in preparation of a more significant rewrite
* Use ccache; remove unneeded forward declaration
* Simply use stat() for validate_path. (I didn't have stat when I wrote it originally.)
* Add EXT2_IS{DIR,LNK,REG} macros and use them; the bitflags aren't mutually exclusive!
* Fix double fault and link_count/ELOOP bug
* Fix memory leak
* Symlink cleanup stage 1!
* Handle cases such as cd something/../. "properly".

"Properly" is in scare quotes because it doesn't check whether "something"
exists, if it turns out to be a no-op. Instead, the path is simplified to
"." and therefore the above command would do nothing.

All in all, while slow, I believe symlinks may finally work as they should.
Refactor ext2.c a bit
Plenty of more symlink bugfixes and cleanup.

Better ELOOP detection, all tests (src/userspace/tests/symlink) now pass.
Fix initrd_getdents memory leak.

If gendents was called at least once, but NOT until finished (e.g. until
it returns 0), the buffer was never freed.
Solved by checking for this in initrd_close().
Add symlink testing utility
Update TODO (ls -R / find)
Symlink tests: also test absolute paths