Toolchain: rework kernel build.

First step of toolchain rework. Removes unnecessary build steps of genericity to
focus on modularity. The build system is based on modules declared by Sok.mk
files. A module declares its kind, the files it wants to build and the build
method. The build system parses modules makefiles, compute dependencies and
generate the output.

Testing done: make clean && make kernel, everything is built.
make kernel again: nothing to be done.